[Python-checkins] cpython: Issue #11393: Fix faulthandler_thread(): release cancel lock before join lock

victor.stinner python-checkins at python.org
Fri Apr 1 02:31:31 CEST 2011


http://hg.python.org/cpython/rev/8b1341d51fe6
changeset:   69095:8b1341d51fe6
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Fri Apr 01 02:28:22 2011 +0200
summary:
  Issue #11393: Fix faulthandler_thread(): release cancel lock before join lock

If the thread releases the join lock before the cancel lock, the thread may
sometimes still be alive at cancel_dump_tracebacks_later() exit. So the cancel
lock may be destroyed while the thread is still alive, whereas the thread will
try to release the cancel lock, which just crash.

Another minor fix: the thread doesn't release the cancel lock if it didn't
acquire it.

files:
  Modules/faulthandler.c |  2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)


diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -401,6 +401,7 @@
                                          thread.timeout_ms, 0);
         if (st == PY_LOCK_ACQUIRED) {
             /* Cancelled by user */
+            PyThread_release_lock(thread.cancel_event);
             break;
         }
         /* Timeout => dump traceback */
@@ -419,7 +420,6 @@
     /* The only way out */
     thread.running = 0;
     PyThread_release_lock(thread.join_event);
-    PyThread_release_lock(thread.cancel_event);
 }
 
 static void

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list