cpython/Lib/test/test_importlib
Brett Simmers be1dfccdf2
gh-118727: Don't drop the GIL in `drop_gil()` unless the current thread holds it (#118745)
`drop_gil()` assumes that its caller is attached, which means that the current
thread holds the GIL if and only if the GIL is enabled, and the enabled-state
of the GIL won't change. This isn't true, though, because `detach_thread()`
calls `_PyEval_ReleaseLock()` after detaching and
`_PyThreadState_DeleteCurrent()` calls it after removing the current thread
from consideration for stop-the-world requests (effectively detaching it).

Fix this by remembering whether or not a thread acquired the GIL when it last
attached, in `PyThreadState._status.holds_gil`, and check this in `drop_gil()`
instead of `gil->enabled`.

This fixes a crash in `test_multiprocessing_pool_circular_import()`, so I've
reenabled it.
2024-05-23 16:59:35 -04:00
..
builtin
extension
frozen
import_
metadata
namespace_pkgs
partial
resources
source
__init__.py
__main__.py
abc.py
test_abc.py
test_api.py
test_lazy.py
test_locks.py
test_namespace_pkgs.py
test_pkg_import.py
test_spec.py
test_threaded_import.py
test_util.py
test_windows.py
threaded_import_hangers.py
util.py