[Libreoffice-commits] online.git: net/Socket.cpp net/Socket.hpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon Apr 3 05:14:43 UTC 2017


 net/Socket.cpp |   13 ++-----------
 net/Socket.hpp |    6 ++++++
 2 files changed, 8 insertions(+), 11 deletions(-)

New commits:
commit d7858b08b90f989b0fe08c1f0309e4cd7f82c409
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sun Apr 2 18:43:21 2017 -0400

    wsd: fix race in setting SocketPoll owner thread id
    
    Change-Id: Idace925ab02425ed66ac07efc22ab933d229d42e
    Reviewed-on: https://gerrit.libreoffice.org/36032
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/net/Socket.cpp b/net/Socket.cpp
index 3a07470c..bac3a741 100644
--- a/net/Socket.cpp
+++ b/net/Socket.cpp
@@ -52,16 +52,8 @@ SocketPoll::SocketPoll(const std::string& threadName)
         throw std::runtime_error("Failed to allocate pipe for SocketPoll [" + threadName + "] waking.");
     }
 
-    {
-        std::lock_guard<std::mutex> lock(getPollWakeupsMutex());
-        getWakeupsArray().push_back(_wakeup[1]);
-    }
-
-#if ENABLE_DEBUG
-    _owner = std::this_thread::get_id();
-    LOG_DBG("Thread affinity of " << _name << " set to 0x" <<
-            std::hex << _owner << "." << std::dec);
-#endif
+    std::lock_guard<std::mutex> lock(getPollWakeupsMutex());
+    getWakeupsArray().push_back(_wakeup[1]);
 }
 
 SocketPoll::~SocketPoll()
@@ -92,7 +84,6 @@ void SocketPoll::startThread()
         try
         {
             _thread = std::thread(&SocketPoll::pollingThreadEntry, this);
-            _owner = _thread.get_id();
         }
         catch (const std::exception& exc)
         {
diff --git a/net/Socket.hpp b/net/Socket.hpp
index 9977f481..200c389b 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -493,6 +493,12 @@ private:
             Util::setThreadName(_name);
             LOG_INF("Starting polling thread [" << _name << "].");
 
+#if ENABLE_DEBUG
+            _owner = std::this_thread::get_id();
+            LOG_DBG("Thread affinity of " << _name << " set to 0x" <<
+                    std::hex << _owner << "." << std::dec);
+#endif
+
             // Invoke the virtual implementation.
             pollingThread();
         }


More information about the Libreoffice-commits mailing list