Updated Branches:
  refs/heads/3.0.x 6f8c3d33f -> 245d197e4

TS-857: race in UnixNetVConnection::do_io_close(), 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/245d197e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/245d197e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/245d197e

Branch: refs/heads/3.0.x
Commit: 245d197e401f70936a47cdb66682a72b801596c3
Parents: 6f8c3d3
Author: Brian Geffon <[email protected]>
Authored: Thu Apr 12 16:31:03 2012 -0700
Committer: Brian Geffon <[email protected]>
Committed: Thu Apr 12 16:31:03 2012 -0700

----------------------------------------------------------------------
 CHANGES                          |    3 +++
 STATUS                           |    5 -----
 iocore/net/UnixNetVConnection.cc |   10 +++++-----
 3 files changed, 8 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/245d197e/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 2419ac0..8eeae9c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.0.5
+  
+  *) [TS-857] race condition UnixNetVConnection::do_io_close()
+
   *) [TS-1158] race condition UnixNetVConnection::mainEvent() when handling
      an inactivity timeout
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/245d197e/STATUS
----------------------------------------------------------------------
diff --git a/STATUS b/STATUS
index 0486e53..4c53676 100644
--- a/STATUS
+++ b/STATUS
@@ -41,11 +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::do_io_close()
-   master SHA: 2731f6bfabfb983af3ddb8a48cde537d7503f283
-   Jira: https://issues.apache.org/jira/browse/TS-857
-   +1: jplevyak, zym, zwoop
-
   *) build fails on GCC 4.7 and clang
    master SHA: fe1da80b94d368343174ada8b137a0c4ae1c387e
               fe1da80b94d368343174ada8b137a0c4ae1c387e

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/245d197e/iocore/net/UnixNetVConnection.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc
index 8b290d0..d99e226 100644
--- a/iocore/net/UnixNetVConnection.cc
+++ b/iocore/net/UnixNetVConnection.cc
@@ -554,6 +554,9 @@ UnixNetVConnection::do_io_close(int alerrno /* = -1 */ )
   write.vio.nbytes = 0;
   write.vio.op = VIO::NONE;
 
+  EThread *t = this_ethread();
+  bool close_inline = !recursion && nh->mutex->thread_holding == t;
+
   INK_WRITE_MEMORY_BARRIER;
   if (alerrno && alerrno != -1)
     this->lerrno = alerrno;
@@ -562,11 +565,8 @@ UnixNetVConnection::do_io_close(int alerrno /* = -1 */ )
   else
     closed = -1;
 
-  if (!recursion) {
-     EThread *t = this_ethread();
-     if (nh->mutex->thread_holding == t)
-       close_UnixNetVConnection(this, t);
-  }
+  if (close_inline)
+    close_UnixNetVConnection(this, t);
 }
 
 void

Reply via email to