Updated Branches:
  refs/heads/3.0.x 9dde9dc23 -> 6f8c3d33f

TS-1158: race in UnixNetVConnection::mainEvent(), Review: jplevyak, zym, zwoop, 
Backport: briang


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

Branch: refs/heads/3.0.x
Commit: 6f8c3d33f005fa114b339b90d00932ef099a59d7
Parents: 9dde9dc
Author: Brian Geffon <[email protected]>
Authored: Thu Apr 12 15:57:01 2012 -0700
Committer: Brian Geffon <[email protected]>
Committed: Thu Apr 12 15:57:01 2012 -0700

----------------------------------------------------------------------
 CHANGES                          |    3 +++
 STATUS                           |    6 ------
 iocore/net/UnixNetVConnection.cc |    4 +++-
 3 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6f8c3d33/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index b5eb5d2..2419ac0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.0.5
+  *) [TS-1158] race condition UnixNetVConnection::mainEvent() when handling
+     an inactivity timeout
+
   *) [TS-1114] crash from access to CacheVC::write_vector without vol lock.
 
 Changes with Apache Traffic Server 3.0.4

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6f8c3d33/STATUS
----------------------------------------------------------------------
diff --git a/STATUS b/STATUS
index bf69bb0..0486e53 100644
--- a/STATUS
+++ b/STATUS
@@ -41,12 +41,6 @@ A list of all bugs open for the next v3.0.4 release can be 
found at
 
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
 
-  *) race condition UnixNetVConnection::mainEvent() when handling
-     an inactivity timeout
-   master SHA: b1f2e984379d6dc11cb70136ba33d46527a317d3
-   Jira: https://issues.apache.org/jira/browse/TS-1158
-   +1: jplevyak, zym, zwoop
-
   *) race condition UnixNetVConnection::do_io_close()
    master SHA: 2731f6bfabfb983af3ddb8a48cde537d7503f283
    Jira: https://issues.apache.org/jira/browse/TS-857

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6f8c3d33/iocore/net/UnixNetVConnection.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc
index ac80aca..8b290d0 100644
--- a/iocore/net/UnixNetVConnection.cc
+++ b/iocore/net/UnixNetVConnection.cc
@@ -966,7 +966,9 @@ UnixNetVConnection::mainEvent(int event, Event *e)
   MUTEX_TRY_LOCK(rlock, read.vio.mutex ? (ProxyMutex *) read.vio.mutex : 
(ProxyMutex *) e->ethread->mutex, e->ethread);
   MUTEX_TRY_LOCK(wlock, write.vio.mutex ? (ProxyMutex *) write.vio.mutex :
                  (ProxyMutex *) e->ethread->mutex, e->ethread);
-  if (!hlock || !rlock || !wlock) {
+  if (!hlock || !rlock || !wlock ||
+      (read.vio.mutex.m_ptr && rlock.m.m_ptr != read.vio.mutex.m_ptr) ||
+      (write.vio.mutex.m_ptr && wlock.m.m_ptr != write.vio.mutex.m_ptr)) {
 #ifndef INACTIVITY_TIMEOUT
     if (e == active_timeout)
 #endif

Reply via email to