trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject trafficserver git commit: TS-3156: Fix crash for MutexTryLock::acquire()
Date Fri, 21 Nov 2014 02:58:01 GMT
Repository: trafficserver
Updated Branches:
  refs/heads/master 10a361304 -> 74e2bb7be


TS-3156: Fix crash for MutexTryLock::acquire()


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/74e2bb7b
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/74e2bb7b
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/74e2bb7b

Branch: refs/heads/master
Commit: 74e2bb7bee07d265ad6537da9b5755304257c576
Parents: 10a3613
Author: Alan M. Carroll <amc@network-geographics.com>
Authored: Thu Nov 20 16:11:53 2014 -0600
Committer: Alan M. Carroll <amc@network-geographics.com>
Committed: Thu Nov 20 20:57:35 2014 -0600

----------------------------------------------------------------------
 iocore/eventsystem/I_Lock.h | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/74e2bb7b/iocore/eventsystem/I_Lock.h
----------------------------------------------------------------------
diff --git a/iocore/eventsystem/I_Lock.h b/iocore/eventsystem/I_Lock.h
index d69a364..bb3d2f3 100644
--- a/iocore/eventsystem/I_Lock.h
+++ b/iocore/eventsystem/I_Lock.h
@@ -471,42 +471,38 @@ class MutexTryLock
 {
 private:
   Ptr<ProxyMutex> m;
-  volatile bool lock_acquired;
+  bool lock_acquired;
 
 public:
   MutexTryLock(
 #ifdef DEBUG
                   const char *afile, int aline, const char *ahandler,
 #endif                          //DEBUG
-                  ProxyMutex * am, EThread * t)
+                  ProxyMutex * am, EThread * t) : m(am)
   {
       lock_acquired = Mutex_trylock(
 #ifdef DEBUG
                                      afile, aline, ahandler,
 #endif //DEBUG
-                                     am, t);
-      if (lock_acquired)
-        m = am;
+                                     m, t);
   }
 
   MutexTryLock(
 #ifdef DEBUG
                 const char *afile, int aline, const char *ahandler,
 #endif                          //DEBUG
-                ProxyMutex * am, EThread * t, int sp)
+                ProxyMutex * am, EThread * t, int sp) : m(am)
   {
       lock_acquired = Mutex_trylock_spin(
 #ifdef DEBUG
                                           afile, aline, ahandler,
 #endif //DEBUG
-                                          am, t, sp);
-      if (lock_acquired)
-        m = am;
+                                          m, t, sp);
   }
 
   ~MutexTryLock()
   {
-    if (m.m_ptr)
+    if (lock_acquired)
       Mutex_unlock(m.m_ptr, m.m_ptr->thread_holding);
   }
 
@@ -520,10 +516,9 @@ public:
 
   void release()
   {
-    ink_assert(m.m_ptr);
-    if (m.m_ptr) {
+    ink_assert(lock_acquired); // generate a warning because it shouldn't be done.
+    if (lock_acquired) {
       Mutex_unlock(m.m_ptr, m.m_ptr->thread_holding);
-      m.clear();
     }
     lock_acquired = false;
   }


Mime
View raw message