New submission from Ronan Lamy <[email protected]>:
The IMPORT_NAME bytecode has a fast path calling
PyImport_ImportModuleLevelObject() that behaves differently from importlib. In
particular, test_circular_imports() in test_threaded_import.py fails due to a
_DeadlockError if you replace some import statements with
importlib.import_module() as in
diff --git a/Lib/test/test_importlib/test_threaded_import.py
b/Lib/test/test_importlib/test_threaded_import.py
index d1f64c7..243d2c1 100644
--- a/Lib/test/test_importlib/test_threaded_import.py
+++ b/Lib/test/test_importlib/test_threaded_import.py
@@ -60,8 +60,12 @@ circular_imports_modules = {
x = 'b'
import D
""",
- 'C': """import B""",
- 'D': """import A""",
+ 'C': """if 1:
+ import importlib
+ B = importlib.import_module('B')""",
+ 'D': """if 1:
+ import importlib
+ A = importlib.import_module('A')""",
}
----------
components: Library (Lib)
messages: 351738
nosy: Ronan.Lamy
priority: normal
severity: normal
status: open
title: Multi-threaded circular import fails with _DeadlockError when using
importlib
type: behavior
versions: Python 3.6, Python 3.7, Python 3.8, Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38095>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com