cpython/Python
Eric Snow b2e71ff4f8
gh-120161: Fix a Crash in the _datetime Module (gh-120182)
In gh-120009 I used an atexit hook to finalize the _datetime module's static types at interpreter shutdown.  However, atexit hooks are executed very early in finalization, which is a problem in the few cases where a subclass of one of those static types is still alive until the final GC collection.  The static builtin types don't have this probably because they are finalized toward the end, after the final GC collection.  To avoid the problem for _datetime, I have applied a similar approach here.

Also, credit goes to @mgorny and @neonene for the new tests.

FYI, I would have liked to take a slightly cleaner approach with managed static types, but wanted to get a smaller fix in first for the sake of backporting.  I'll circle back to the cleaner approach with a future change on the main branch.
2024-06-14 13:29:09 -06:00
..
clinic gh-111201: A new Python REPL (GH-111567) 2024-05-05 21:32:23 +02:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
_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
asdl.c
asm_trampoline.S gh-120400 :Support Linux perf profile to see Python calls on RISC-V architecture (#120089) 2024-06-12 14:24:46 +01:00
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 GH-113655: Lower the C recursion limit on various platforms (GH-113944) 2024-01-16 09:32:01 +00:00
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 gh-110014: Fix bootstrap_hash.c: remove debug code (#110161) 2023-09-30 22:21:20 +00:00
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c gh-119180: PEP 649 compiler changes (#119361) 2024-06-11 13:06:49 +00: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-93691: fix too broad source locations of for statement iterators (#120330) 2024-06-12 12:53:19 +01:00
condvar.h gh-104530: Enable native Win32 condition variables by default (GH-104531) 2024-02-02 13:50:51 +00:00
config_common.h gh-76785: Add PyInterpreterConfig Helpers (gh-117170) 2024-04-02 20:35:52 +00:00
context.c gh-111968: Split _Py_dictkeys_freelist out of _Py_dict_freelist (gh-115505) 2024-02-16 01:01:36 +00:00
critical_section.c gh-111569: Implement Python critical section API (gh-111571) 2023-11-08 15:39:29 -07:00
crossinterp.c gh-76785: Handle Legacy Interpreters Properly (gh-117490) 2024-04-11 23:23:25 +00:00
crossinterp_data_lookup.h gh-76785: Improved Subinterpreters Compatibility with 3.12 (gh-115424) 2024-02-13 14:56:49 -07:00
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 gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
dynamic_annotations.c
dynload_hpux.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_shlib.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_stub.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_win.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
emscripten_signal.c GH-108614: Unbreak emscripten build (GH-109132) 2023-09-08 17:54:45 +01:00
emscripten_trampoline.c gh-106213: Make Emscripten trampolines work with JSPI (GH-106219) 2023-09-15 15:04:21 -07:00
errors.c gh-118702: Implement vectorcall for BaseException (#118703) 2024-05-10 21:08:24 +02:00
executor_cases.c.h gh-119180: PEP 649 compiler changes (#119361) 2024-06-11 13:06:49 +00:00
fileutils.c gh-118422: Fix run_fileexflags() test (#118429) 2024-04-30 22:32:55 +02:00
flowgraph.c gh-120225: fix crash in compiler on empty block at end of exception handler (#120235) 2024-06-07 22:37:35 +01:00
formatter_unicode.c gh-92536: Remove PyUnicode_READY() calls (#105210) 2023-06-02 01:33:17 +02:00
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 gh-111968: Rename freelist related struct names to Eric's suggestion (gh-115329) 2024-02-14 00:32:51 +00:00
generated_cases.c.h gh-119180: PEP 649 compiler changes (#119361) 2024-06-11 13:06:49 +00: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 Update copyright years to 2024. (GH-113608) 2024-01-16 21:54:05 +01:00
getopt.c gh-110079: Remove extern "C" { ...} in C code (#110080) 2023-09-29 10:56:49 +02:00
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 gh-106320: Remove private PyLong C API functions (#108429) 2023-08-24 18:53:50 +02:00
hashtable.c gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
import.c gh-117657: Fix TSAN race involving import lock (#118523) 2024-06-06 13:40:58 -04: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-117657: Fix some simple races in instrumentation.c (GH-120118) 2024-06-13 17:31:21 +08: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-117657: Fix TSAN race involving import lock (#118523) 2024-06-06 13:40:58 -04:00
marshal.c gh-116322: Add Py_mod_gil module slot (#116882) 2024-05-03 11:30:55 -04:00
modsupport.c gh-84489: Properly handle trailing spaces in Py_BuildValue() format strings (GH-21158) 2023-10-11 14:44:06 +03:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
object_stack.c gh-111968: Split _Py_dictkeys_freelist out of _Py_dict_freelist (gh-115505) 2024-02-16 01:01:36 +00:00
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-119258: Eliminate Type Guards in Tier 2 Optimizer with Watcher (GH-119365) 2024-06-08 17:41:45 +08:00
optimizer_bytecodes.c gh-119258: Eliminate Type Guards in Tier 2 Optimizer with Watcher (GH-119365) 2024-06-08 17:41:45 +08:00
optimizer_cases.c.h gh-119258: Eliminate Type Guards in Tier 2 Optimizer with Watcher (GH-119365) 2024-06-08 17:41:45 +08:00
optimizer_symbols.c gh-119258: Eliminate Type Guards in Tier 2 Optimizer with Watcher (GH-119365) 2024-06-08 17:41:45 +08: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 gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c gh-119219: Remove two obsolete TODOs. (#119223) 2024-05-20 16:54:16 +00: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-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
pylifecycle.c gh-120161: Fix a Crash in the _datetime Module (gh-120182) 2024-06-14 13:29:09 -06: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 gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
pystrhex.c gh-108765: pystrhex: Replace stdlib.h abs() with Py_ABS() (#108830) 2023-09-02 23:15:54 +02:00
pystrtod.c gh-119613: Use C99+ functions instead of Py_IS_NAN/INFINITY/FINITE (#119619) 2024-05-29 09:51:19 +02:00
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-120343: Fix column offsets of multiline tokens in tokenize (#120391) 2024-06-12 20:52:55 +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
README
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 gh-115011: Improve support of __index__() in setters of members with unsigned integer type (GH-115029) 2024-02-11 12:45:58 +02:00
suggestions.c gh-113845: Fix a compiler warning in Python/suggestions.c (GH-113949) 2024-01-11 20:31:24 +02:00
symtable.c gh-120029: remove unused macros in `symtable.c` (#120222) 2024-06-12 09:23:45 -04:00
sysmodule.c gh-74929: PEP 667 C API documentation (gh-119379) 2024-06-01 13:59:35 +10:00
thread.c gh-110850: Cleanup PyTime API: PyTime_t are nanoseconds (#115753) 2024-02-21 11:46:00 +01:00
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 GH-110829: Ensure Thread.join() joins the OS thread (#110848) 2023-11-04 13:59:24 +00:00
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

Miscellaneous source files for the main Python shared library