From 202b60640bd873f00ee121cb24ee4a6409eb8993 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 18 Dec 2012 22:18:17 +0100 Subject: Add sanity assertions in some import lock code (issue #15599). --- Lib/test/test_threaded_import.py | 1 + Python/import.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Lib/test/test_threaded_import.py b/Lib/test/test_threaded_import.py index 0528b13..93bfb2a 100644 --- a/Lib/test/test_threaded_import.py +++ b/Lib/test/test_threaded_import.py @@ -68,6 +68,7 @@ class Finder: # Simulate some thread-unsafe behaviour. If calls to find_module() # are properly serialized, `x` will end up the same as `numcalls`. # Otherwise not. + assert imp.lock_held() with self.lock: self.numcalls += 1 x = self.x diff --git a/Python/import.c b/Python/import.c index 2f71b97..5fc2523 100644 --- a/Python/import.c +++ b/Python/import.c @@ -169,6 +169,7 @@ _PyImport_AcquireLock(void) PyThread_acquire_lock(import_lock, 1); PyEval_RestoreThread(tstate); } + assert(import_lock_level == 0); import_lock_thread = me; import_lock_level = 1; } @@ -182,6 +183,7 @@ _PyImport_ReleaseLock(void) if (import_lock_thread != me) return -1; import_lock_level--; + assert(import_lock_level >= 0); if (import_lock_level == 0) { import_lock_thread = -1; PyThread_release_lock(import_lock); -- cgit v0.12