cpython/Python
Sam Gross e69d068ad0
gh-117657: Fix race involving GC and heap initialization (#119923)
The `_PyThreadState_Bind()` function is called before the first
`PyEval_AcquireThread()` so it's not synchronized with the stop the
world GC. We had a race where `gc_visit_heaps()` might visit a thread's
heap while it's being initialized.

Use a simple atomic int to avoid visiting heaps for threads that are not
yet fully initialized (i.e., before `tstate_mimalloc_bind()` is called).

The race was reproducible by running:
`python Lib/test/test_importlib/partial/pool_in_threads.py`.
2024-06-04 09:42:13 -04:00
..
clinic gh-111201: A new Python REPL (GH-111567) 2024-05-05 21:32:23 +02:00
frozen_modules
Python-ast.c gh-118851: Default ctx arguments to AST constructors to Load() (#118854) 2024-05-09 15:30:14 -07:00
Python-tokenize.c gh-119704: Fix reference leak in the ``Python/Python-tokenize.c`` (#119705) 2024-05-29 07:56:44 +01:00
README
_warnings.c gh-119049: Fix incorrect display of warning which is constructed by C API (GH-119063) 2024-05-16 20:27:59 +00:00
adaptive.md
asdl.c
asm_trampoline.S
assemble.c gh-117494: extract the Instruction Sequence data structure into a separate file (#117496) 2024-04-04 15:47:26 +00:00
ast.c gh-116126: Implement PEP 696 (#116129) 2024-05-03 06:17:32 -07:00
ast_opt.c
ast_unparse.c gh-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
bltinmodule.c gh-117657: Fix race involving immortalizing objects (#119927) 2024-06-03 20:58:41 +00:00
bootstrap_hash.c
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c gh-74929: PEP 667 C API documentation (gh-119379) 2024-06-01 13:59:35 +10:00
ceval.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
ceval_gil.c gh-118727: Don't drop the GIL in `drop_gil()` unless the current thread holds it (#118745) 2024-05-23 16:59:35 -04:00
ceval_macros.h gh-107674: Improve performance of `sys.settrace` (GH-117133) 2024-05-03 19:49:24 +01:00
codecs.c gh-116738: Make `_codecs` module thread-safe (#117530) 2024-05-02 18:25:36 -04:00
compile.c gh-119744: move a few functions from compile.c to flowgraph.c (#119745) 2024-05-30 21:55:06 +01:00
condvar.h
config_common.h gh-76785: Add PyInterpreterConfig Helpers (gh-117170) 2024-04-02 20:35:52 +00:00
context.c
critical_section.c
crossinterp.c gh-76785: Handle Legacy Interpreters Properly (gh-117490) 2024-04-11 23:23:25 +00:00
crossinterp_data_lookup.h
crossinterp_exceptions.h gh-117398: Use Per-Interpreter State for the _datetime Static Types (gh-119929) 2024-06-03 17:09:18 -06:00
dtoa.c gh-91565: Replace bugs.python.org links with Devguide/GitHub ones (GH-91568) 2024-04-01 13:02:07 +00:00
dup2.c
dynamic_annotations.c
dynload_hpux.c
dynload_shlib.c
dynload_stub.c
dynload_win.c
emscripten_signal.c
emscripten_trampoline.c
errors.c gh-118702: Implement vectorcall for BaseException (#118703) 2024-05-10 21:08:24 +02:00
executor_cases.c.h gh-74929: PEP 667 C API documentation (gh-119379) 2024-06-01 13:59:35 +10:00
fileutils.c gh-118422: Fix run_fileexflags() test (#118429) 2024-04-30 22:32:55 +02:00
flowgraph.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
formatter_unicode.c
frame.c gh-118272: set stacktop to 0 before freeing contents, to avoid access to invalid objects during GC (#118478) 2024-05-01 21:51:40 +01:00
frozen.c gh-108716: Cleanup remaining deepfreeze infrastructure (#116919) 2024-03-18 11:13:11 -07:00
frozenmain.c gh-105716: Fix _PyInterpreterState_IsRunningMain() For Embedders (gh-117140) 2024-03-21 18:20:20 -06:00
future.c gh-118216: Don't consider dotted `__future__` imports (#118267) 2024-05-02 06:32:20 -07:00
gc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
gc_free_threading.c gh-117657: Fix race involving GC and heap initialization (#119923) 2024-06-04 09:42:13 -04:00
gc_gil.c
generated_cases.c.h gh-74929: PEP 667 C API documentation (gh-119379) 2024-06-01 13:59:35 +10:00
getargs.c gh-117557: Improve error messages when a string, bytes or bytearray of length 1 are expected (GH-117631) 2024-05-28 12:01:37 +03:00
getcompiler.c
getcopyright.c
getopt.c
getplatform.c
getversion.c gh-119132: Update sys.version to identify free-threaded or not. (gh-119134) 2024-05-18 19:44:40 +00:00
hamt.c
hashtable.c
import.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
importdl.c gh-117953: Imply Single-phase Init if the Init Function Fails (gh-118684) 2024-05-06 21:16:22 -06:00
initconfig.c gh-118518: Rename `PYTHONPERFJITSUPPORT` and `-X perfjit` with underscores (#118693) 2024-05-07 11:47:21 +00:00
instruction_sequence.c gh-117680: Fix msvc warning in instruction_sequence.c (#118326) 2024-04-26 17:20:30 +01:00
instrumentation.c gh-111997: Fix argument count for LINE event and clarify type of argument counts. (#119179) 2024-05-26 12:37:33 +00:00
interpconfig.c gh-76785: Fix a Refleak in _interpreters.new_config() (gh-117491) 2024-04-03 01:10:26 +00:00
intrinsics.c gh-74929: Implement PEP 667 (GH-115153) 2024-05-04 12:12:10 +01:00
jit.c GH-118844: Fix build failures when combining --disable-gil with --enable-experimental-jit (GH-118935) 2024-05-11 16:19:31 -07:00
legacy_tracing.c gh-107674: Lazy load line number to improve performance of tracing (GH-118127) 2024-04-29 09:54:52 +01:00
lock.c gh-110850: Remove _PyTime_TimeUnchecked() function (#118552) 2024-05-05 12:15:19 +02:00
marshal.c gh-116322: Add Py_mod_gil module slot (#116882) 2024-05-03 11:30:55 -04:00
modsupport.c
mysnprintf.c
mystrtoul.c
object_stack.c
opcode_targets.h gh-119180: Add LOAD_COMMON_CONSTANT opcode (#119321) 2024-05-22 00:46:39 +00:00
optimizer.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
optimizer_analysis.c GH-118910: Less boilerplate in the tier 2 optimizer (#118913) 2024-05-10 17:43:23 +01:00
optimizer_bytecodes.c GH-119476: Split _CHECK_FUNCTION_VERSION out of _CHECK_FUNCTION_EXACT_ARGS (GH-119510) 2024-05-28 12:45:11 -07:00
optimizer_cases.c.h gh-119821: Support non-dict globals in LOAD_FROM_DICT_OR_GLOBALS (#119822) 2024-05-31 14:05:24 -07:00
optimizer_symbols.c GH-118910: Less boilerplate in the tier 2 optimizer (#118913) 2024-05-10 17:43:23 +01:00
parking_lot.c gh-117657: Avoid `sem_clockwait` in TSAN (#119915) 2024-06-03 13:42:27 -04:00
pathconfig.c gh-117987: Restore several functions removed in Python 3.13 alpha 1 (GH-117993) 2024-04-18 15:20:38 +02:00
perf_jit_trampoline.c GH-118844: Fix build failures when combining --disable-gil with --enable-experimental-jit (GH-118935) 2024-05-11 16:19:31 -07:00
perf_trampoline.c gh-118518: Allow perf to work without frame pointers (#112254) 2024-05-05 03:07:29 +02:00
preconfig.c
pyarena.c gh-119219: Remove two obsolete TODOs. (#119223) 2024-05-20 16:54:16 +00:00
pyctype.c
pyfpe.c
pyhash.c gh-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
pylifecycle.c gh-111499: Fix PYTHONMALLOCSTATS at Python exit (#120021) 2024-06-04 11:39:07 +02:00
pymath.c
pystate.c gh-117657: Fix race involving GC and heap initialization (#119923) 2024-06-04 09:42:13 -04:00
pystrcmp.c
pystrhex.c
pystrtod.c gh-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
pythonrun.c gh-111201: A new Python REPL (GH-111567) 2024-05-05 21:32:23 +02:00
pytime.c gh-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
qsbr.c gh-117657: Fix TSAN race in QSBR assertion (#119887) 2024-06-01 10:04:38 -04:00
specialize.c GH-118095: Use broader specializations of CALL in tier 1, for better tier 2 support of calls. (GH-118322) 2024-05-04 12:11:11 +01:00
stdlib_module_names.h gh-111201: A new Python REPL (GH-111567) 2024-05-05 21:32:23 +02:00
structmember.c
suggestions.c
symtable.c gh-119981: Use do while(0) in some symtable.c multi-line macros (#119982) 2024-06-03 15:48:02 +00:00
sysmodule.c gh-74929: PEP 667 C API documentation (gh-119379) 2024-06-01 13:59:35 +10:00
thread.c
thread_nt.h gh-110850: Use _PyDeadline_Get() in EnterNonRecursiveMutex() (#118556) 2024-05-04 09:39:58 +02:00
thread_pthread.h gh-110850: Remove _PyTime_TimeUnchecked() function (#118552) 2024-05-05 12:15:19 +02:00
thread_pthread_stubs.h
tier2_engine.md Docs: fix spelling of the word 'transferring' (#116641) 2024-03-13 23:53:32 +01:00
traceback.c gh-117764: Fix and add signatures for many builtins (GH-117769) 2024-04-12 13:56:41 +03:00
tracemalloc.c gh-111389: Add PyHASH_MULTIPLIER constant (#119214) 2024-05-21 19:51:51 +02:00
vm-state.md Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00

README

Miscellaneous source files for the main Python shared library