cpython/Python
Eric Snow 8ba4df91ae
gh-105699: Use a _Py_hashtable_t for the PyModuleDef Cache (gh-106974)
This fixes a crasher due to a race condition, triggered infrequently when two isolated (own GIL) subinterpreters simultaneously initialize their sys or builtins modules.  The crash happened due the combination of the "detached" thread state we were using and the "last holder" logic we use for the GIL.  It turns out it's tricky to use the same thread state for different threads.  Who could have guessed?

We solve the problem by eliminating the one object we were still sharing between interpreters.  We replace it with a low-level hashtable, using the "raw" allocator to avoid tying it to the main interpreter.

We also remove the accommodations for "detached" thread states, which were a dubious idea to start with.
2023-07-28 14:39:08 -06:00
..
clinic gh-92536: Argument Clinic no longer emits PyUnicode_READY() (#105208) 2023-06-02 01:31:58 +02:00
deepfreeze gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
Python-ast.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
Python-tokenize.c gh-107015: Remove async_hacks from the tokenizer (#107018) 2023-07-26 16:34:15 +01:00
README
_warnings.c gh-106320: Remove private _PyDict C API (#107145) 2023-07-24 14:02:03 +00:00
adaptive.md GH-98686: Get rid of "adaptive" and "quick" instructions (GH-99182) 2022-11-09 10:50:09 -08:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
asm_trampoline.S gh-96143: Move the perf trampoline files to the Python directory (#98675) 2022-10-25 23:34:22 +01:00
assemble.c gh-105481: move Python/opcode_metadata.h to Include/internal/pycore_opcode_metadata.h (#106673) 2023-07-12 11:30:25 +01:00
ast.c gh-104656: Rename typeparams AST node to type_params (#104657) 2023-05-21 21:25:09 -07:00
ast_opt.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
ast_unparse.c gh-100227: Move _str_replace_inf to PyInterpreterState (gh-102333) 2023-02-28 14:16:39 -07:00
bltinmodule.c gh-106320: Remove private _PyDict C API (#107145) 2023-07-24 14:02:03 +00:00
bootstrap_hash.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
bytecodes.c GH-106895: Raise a `ValueError` when attempting to disable events that cannot be disabled. (GH-107337) 2023-07-27 15:27:11 +01:00
ceval.c GH-106898: Add the exception as an argument to the `PY_UNWIND` event callback function. (GH-107347) 2023-07-27 15:47:33 +01:00
ceval_gil.c GH-104584: Fix ENTER_EXECUTOR (GH-106141) 2023-07-03 21:28:27 +01:00
ceval_macros.h GH-106701: Move _PyUopExecute to Python/executor.c (GH-106924) 2023-07-20 20:37:19 +00:00
codecs.c gh-106521: Remove _PyObject_LookupAttr() function (GH-106642) 2023-07-12 08:57:10 +03:00
compile.c gh-106149: fix comment on stackdepth of generators (#107321) 2023-07-26 22:31:47 +00:00
condvar.h gh-74953: _PyThread_cond_after() uses _PyTime_t (#94056) 2022-06-21 15:45:49 +02:00
context.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
dtoa.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
dup2.c gh-95174: Handle missing dup() and constants in WASI (GH-95229) 2022-07-26 11:16:51 +02:00
dynamic_annotations.c bpo-32241: Add the const qualifire to declarations of umodifiable strings. (#4748) 2017-12-12 13:55:04 +02:00
dynload_hpux.c bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857) 2021-09-08 14:43:00 +02:00
dynload_shlib.c gh-101758: Clean Up Uses of Import State (gh-101919) 2023-02-15 15:32:31 -07:00
dynload_stub.c
dynload_win.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
emscripten_signal.c bpo-47176: Interrupt handling for wasm32-emscripten builds without pthreads (GH-32209) 2022-04-03 22:58:52 +02:00
errors.c gh-106521: Remove _PyObject_LookupAttr() function (GH-106642) 2023-07-12 08:57:10 +03:00
executor.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
executor_cases.c.h GH-106895: Raise a `ValueError` when attempting to disable events that cannot be disabled. (GH-107337) 2023-07-27 15:27:11 +01:00
fileutils.c gh-80064: Fix is_valid_wide_char() return type (#105099) 2023-05-30 18:36:20 +02:00
flowgraph.c gh-106149: Simplify stack depth calculation. Replace asserts by exceptions. (#107255) 2023-07-26 13:32:47 +01:00
formatter_unicode.c gh-92536: Remove PyUnicode_READY() calls (#105210) 2023-06-02 01:33:17 +02:00
frame.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
frozen.c gh-100227: Only Use deepfreeze for the Main Interpreter (gh-103794) 2023-04-24 21:48:05 +00:00
frozenmain.c gh-106320: Remove private _PyInterpreterState functions (#106325) 2023-07-02 01:39:38 +00:00
future.c gh-106320: Remove more private _PyUnicode C API functions (#106382) 2023-07-03 22:35:46 +00:00
generated_cases.c.h GH-106895: Raise a `ValueError` when attempting to disable events that cannot be disabled. (GH-107337) 2023-07-27 15:27:11 +01:00
getargs.c gh-107196: Remove _PyArg_VaParseTupleAndKeywordsFast() function (#107197) 2023-07-27 16:36:54 +02:00
getcompiler.c closes bpo-43278: remove unnecessary leading '\n' from COMPILER when build with GCC/Clang (GH-24606) 2021-02-25 20:24:21 -08:00
getcopyright.c Update copyright years to 2023. (gh-100848) 2023-01-08 09:13:25 -06:00
getopt.c gh-90300: split --help output into separate options (#30331) 2022-06-01 05:50:01 -04:00
getplatform.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
getversion.c gh-81057: Move Globals in Core Code to _PyRuntimeState (gh-99496) 2022-11-15 09:45:11 -07:00
hamt.c gh-106320: Remove _PyInterpreterState_Get() alias (#106321) 2023-07-01 23:44:07 +00:00
hashtable.c gh-106931: Intern Statically Allocated Strings Globally (gh-107272) 2023-07-27 13:56:59 -06:00
import.c gh-105699: Use a _Py_hashtable_t for the PyModuleDef Cache (gh-106974) 2023-07-28 14:39:08 -06:00
importdl.c gh-106320: Remove private _PyErr C API functions (#106356) 2023-07-03 10:48:50 +00:00
importdl.h gh-106210 Remove Emscripten import trampoline (#106211) 2023-06-29 17:20:49 -07:00
initconfig.c Document PYTHONSAFEPATH along side -P (#106122) 2023-07-02 22:44:37 -07:00
instrumentation.c GH-106895: Raise a `ValueError` when attempting to disable events that cannot be disabled. (GH-107337) 2023-07-27 15:27:11 +01:00
intrinsics.c gh-105481: do not auto-generate pycore_intrinsics.h (#106913) 2023-07-20 17:46:04 +01:00
legacy_tracing.c GH-106898: Add the exception as an argument to the `PY_UNWIND` event callback function. (GH-107347) 2023-07-27 15:47:33 +01:00
makeopcodetargets.py gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913) 2023-06-19 23:47:04 +01:00
marshal.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
modsupport.c bpo-42327: C API: Add PyModule_Add() function (GH-23443) 2023-07-18 09:42:05 +03:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c bpo-35134: Add Include/cpython/longobject.h (GH-29044) 2021-10-19 02:04:52 +02:00
opcode_targets.h GH-100288: Specialize LOAD_ATTR for simple class attributes. (#105990) 2023-07-10 11:40:35 +01:00
optimizer.c GH-104584: Miscellaneous fixes for -Xuops (GH-106908) 2023-07-20 16:35:39 +00:00
pathconfig.c gh-105145: Remove old functions to config Python init (#105154) 2023-06-01 09:14:02 +02:00
perf_trampoline.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00
preconfig.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c bpo-43244: Remove the pyarena.h header (GH-25007) 2021-03-24 02:23:01 +01:00
pyctype.c
pyfpe.c bpo-46315: Add ifdef HAVE_ feature checks for WASI compatibility (GH-30507) 2022-01-13 09:46:04 +01:00
pyhash.c gh-106320: Move private _PyHash API to the internal C API (#107026) 2023-07-22 13:49:37 +00:00
pylifecycle.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
pymath.c bpo-45440: Remove pymath.c fallbacks (GH-28977) 2021-10-15 19:45:34 +02:00
pystate.c gh-105699: Use a _Py_hashtable_t for the PyModuleDef Cache (gh-106974) 2023-07-28 14:39:08 -06:00
pystrcmp.c bpo-41524: fix pointer bug in PyOS_mystr{n}icmp (GH-21845) 2020-08-27 14:45:25 +09:00
pystrhex.c gh-106320: Remove _PyUnicode_TransformDecimalAndSpaceToASCII() (#106398) 2023-07-04 08:59:09 +00:00
pystrtod.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
pythonrun.c gh-106521: Remove _PyObject_LookupAttr() function (GH-106642) 2023-07-12 08:57:10 +03:00
pytime.c gh-106316: Remove pytime.h header file (#106317) 2023-07-01 22:27:18 +00:00
specialize.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
stdlib_module_names.h gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913) 2023-06-19 23:47:04 +01:00
structmember.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
suggestions.c gh-106521: Remove _PyObject_LookupAttr() function (GH-106642) 2023-07-12 08:57:10 +03:00
symtable.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
sysmodule.c gh-106320: Remove private _PyDict C API (#107145) 2023-07-24 14:02:03 +00:00
thread.c gh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (gh-104072) 2023-05-01 19:36:00 -06:00
thread_nt.h gh-81057: Move Threading-Related Globals to _PyRuntimeState (#100084) 2022-12-08 17:50:58 -07:00
thread_pthread.h gh-101538: Add experimental wasi-threads build (#101537) 2023-06-22 11:26:10 -07:00
thread_pthread_stubs.h gh-81057: Move Threading-Related Globals to _PyRuntimeState (#100084) 2022-12-08 17:50:58 -07:00
traceback.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
tracemalloc.c GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727) 2023-06-14 13:46:37 +01:00

README

Miscellaneous source files for the main Python shared library