mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
gh-117300: Use stop the world to make sys._current_frames
and sys._current_exceptions
thread-safe. (#117301)
This adds a stop the world pause to make the two functions thread-safe when the GIL is disabled in the free-threaded build. Additionally, the main test thread may call `sys._current_exceptions()` as soon as `g_raised.set()` is called. The background thread may not yet reach the `leave_g.wait()` line.
This commit is contained in:
parent
94c97423a9
commit
01bd74eadb
2 changed files with 6 additions and 1 deletions
|
@ -562,7 +562,8 @@ class SysModuleTest(unittest.TestCase):
|
|||
# And the next record must be for g456().
|
||||
filename, lineno, funcname, sourceline = stack[i+1]
|
||||
self.assertEqual(funcname, "g456")
|
||||
self.assertTrue(sourceline.startswith("if leave_g.wait("))
|
||||
self.assertTrue((sourceline.startswith("if leave_g.wait(") or
|
||||
sourceline.startswith("g_raised.set()")))
|
||||
finally:
|
||||
# Reap the spawned thread.
|
||||
leave_g.set()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue