Message383830
| Author |
vstinner |
| Recipients |
aeros, corona10, eric.snow, erlendaasland, shihai1991, vstinner |
| Date |
2020年12月26日.22:10:14 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1609020615.05.0.30691030285.issue40512@roundup.psfhosted.org> |
| In-reply-to |
| Content |
I played with ./configure --with-experimental-isolated-subinterpreters. I tried to run "pip list" in parallel in multiple interpreters.
I hit multiple issues:
* non-atomic reference count of Python objects shared by multiple interpreters, objects shared via static types for example.
* resolve_slotdups() uses a static variable
* pip requires _xxsubinterpreters.create(isolated=False): the vendored distro package runs the lsb_release command with subprocess.
* Race conditions in PyType_Ready() on static types:
* Objects/typeobject.c:5494: PyType_Ready: Assertion "(type->tp_flags & (1UL << 13)) == 0" failed
* Race condition in add_subclass()
* parser_init() doesn't support subinterpreters
* unicode_dealloc() fails to delete an interned string in the Unicode interned dictionary => https://bugs.python.org/issue40521#msg383829
To run "pip list", I used:
CODE = """
import runpy
import sys
import traceback
sys.argv = ["pip", "list"]
try:
runpy.run_module("pip", run_name="__main__", alter_sys=True)
except SystemExit:
pass
except Exception as exc:
traceback.print_exc()
print("BUG", exc)
raise
""" |
|