This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

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
"""
History
Date User Action Args
2020-12-26 22:10:15vstinnersetrecipients: + vstinner, eric.snow, corona10, shihai1991, aeros, erlendaasland
2020-12-26 22:10:15vstinnersetmessageid: <1609020615.05.0.30691030285.issue40512@roundup.psfhosted.org>
2020-12-26 22:10:15vstinnerlinkissue40512 messages
2020-12-26 22:10:14vstinnercreate