New submission from STINNER Victor <vstin...@python.org>:
Build attached newinter.c C extension. Example: $ gcc -shared newinter.c $(pkg-config python-3.10 --cflags --libs) -o newinter.so -fPIC Trying to load the C extension crashs in various ways. Crashes on a Python debug build: (1) $ PYTHONPATH=$PWD ./python -c 'import newinter' create new thread Modules/gcmodule.c:113: gc_decref: Assertion "gc_get_refs(g) > 0" failed: refcount is too small Enable tracemalloc to get the memory block allocation traceback object address : 0x7f1a1163c8f0 object refcount : 1 object type : 0x871020 object type name: dict object repr : {} Fatal Python error: _PyObject_AssertFailed: _PyObject_AssertFailed Python runtime state: finalizing (tstate=0x0000000001e0d390) Current thread 0x00007f1a115a0640 (most recent call first): File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 855 in exec_module File Exception ignored deletion of interned string failed"<frozen importlib._bootstrap>", line 688 in _load_unlocked File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1027 in _find_and_load File "<frozen importlib._bootstrap>", line 1207 in _install_external_importers Segmentation fault (core dumped) (2) $ PYTHONPATH=$PWD ./python -c 'import newinter' create new thread Objects/unicodeobject.c:15769: _Py_NegativeRefcount: Assertion failed: object has negative ref count Enable tracemalloc to get the memory block allocation traceback object address : 0x7fe124af08e0 object refcount : -1 object type : 0x8797e0 object type name: str object repr : Debug memory block at address p=0x7fe124af08e0: API 'o' 60 bytes originally requested The 7 pad bytes at p-7 are FORBIDDENBYTE, as expected. The 8 pad bytes at tail=0x7fe124af091c are not all FORBIDDENBYTE (0xfd): at tail+0: 0x72 *** OUCH at tail+1: 0x5f *** OUCH at tail+2: 0x63 *** OUCH at tail+3: 0x61 *** OUCH at tail+4: 0x63 *** OUCH at tail+5: 0x68 *** OUCH at tail+6: 0x65 *** OUCH at tail+7: 0xfd Data at p: ff ff ff ff ff ff ff ff ... 61 6b 72 65 66 5f 5f 65<refcnt -1 at 0x7fe124af08e0> Enable tracemalloc to get the memory block allocation traceback Fatal Python error: _PyMem_DebugRawFree: bad trailing pad byte Python runtime state: finalizing (tstate=0x0000000001564390) Current thread 0x00007fe1321ff740 (most recent call first): <no Python frame> Extension modules: newinter (total: 1) Aborted (core dumped) (3) $ PYTHONPATH=$PWD ./python -c 'import newinter' create new thread Exception ignored deletion of interned string failedFatal Python error: _PyInterpreterState_GET: the function must be called with the GIL held, but the GIL is released (the current Python thread state is NULL) Python runtime state: finalizing (tstate=0x0000000000c51390) Current thread 0x00007f329308a640 (most recent call first): File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 855 in exec_module File "<frozen importlib._bootstrap>", line 688 in _load_unlocked File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1027 in _find_and_load File "<frozen importlib._bootstrap>", line 1207 in _install_external_importers Aborted (core dumped) (4) $ PYTHONPATH=$PWD ./python -c 'import newinter' create new thread Fatal Python error: _Py_CheckSlotResult: Slot __setitem__ of type dict succeeded with an exception set Python runtime state: finalizing (tstate=0x0000000000f0e390) Thread 0xTraceback (most recent call last): 00007fb4a331b640 (most recent call first): <no Python frame> Aborted (core dumped) ---------- components: C API files: newinter.c messages: 390626 nosy: vstinner priority: normal severity: normal status: open title: [C API] Py_NewInterpreter() cannot be called from a thread which has no Python thread state versions: Python 3.10 Added file: https://bugs.python.org/file49950/newinter.c _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue43793> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com