cpython/Include/internal
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
..
mimalloc Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_abstract.h
pycore_asdl.h
pycore_ast.h gh-116126: Implement PEP 696 (#116129) 2024-05-03 06:17:32 -07:00
pycore_ast_state.h gh-116126: Implement PEP 696 (#116129) 2024-05-03 06:17:32 -07:00
pycore_atexit.h gh-76785: Rename _xxsubinterpreters to _interpreters (gh-117791) 2024-04-24 16:18:24 +00:00
pycore_backoff.h gh-117549: Don't use designated initializers in headers (#118580) 2024-05-05 19:28:55 +00:00
pycore_bitutils.h
pycore_blocks_output_buffer.h
pycore_brc.h gh-110481: Implement inter-thread queue for biased reference counting (#114824) 2024-02-09 17:08:32 -05:00
pycore_bytes_methods.h gh-117431: Adapt bytes and bytearray .find() and friends to Argument Clinic (#117502) 2024-04-12 07:40:55 +00:00
pycore_bytesobject.h
pycore_call.h gh-112026: Restore removed private C API (#112115) 2023-11-15 16:38:31 +00:00
pycore_capsule.h
pycore_cell.h gh-117323: Make cell thread-safe in free-threaded builds (#117330) 2024-03-29 13:35:43 -04:00
pycore_ceval.h gh-117657: Fix TSAN reported race in _PyEval_IsGILEnabled. (#119921) 2024-06-02 10:19:02 -04:00
pycore_ceval_state.h gh-118518: Allow perf to work without frame pointers (#112254) 2024-05-05 03:07:29 +02:00
pycore_code.h gh-118527: Intern code consts in free-threaded build (#118667) 2024-05-06 20:12:39 -04:00
pycore_codecs.h gh-116738: Make _codecs module thread-safe (#117530) 2024-05-02 18:25:36 -04:00
pycore_compile.h gh-119744: move a few functions from compile.c to flowgraph.c (#119745) 2024-05-30 21:55:06 +01:00
pycore_complexobject.h gh-112026: Restore removed private C API (#112115) 2023-11-15 16:38:31 +00:00
pycore_condvar.h gh-104530: Enable native Win32 condition variables by default (GH-104531) 2024-02-02 13:50:51 +00:00
pycore_context.h gh-111968: Refactor _PyXXX_Fini to integrate with _PyObject_ClearFreeLists (gh-114899) 2024-02-10 00:57:04 +00:00
pycore_critical_section.h gh-119247: Add macros to use PySequence_Fast safely in free-threaded build (#119315) 2024-05-22 17:45:34 +00:00
pycore_crossinterp.h gh-76785: Handle Legacy Interpreters Properly (gh-117490) 2024-04-11 23:23:25 +00:00
pycore_descrobject.h
pycore_dict.h GH-119258: Handle STORE_ATTR_WITH_HINT in tier two (GH-119481) 2024-05-28 12:47:54 -07:00
pycore_dict_state.h GH-113710: Add a "globals to constants" pass (GH-114592) 2024-02-02 12:14:34 +00:00
pycore_dtoa.h gh-111962: Make dtoa thread-safe in --disable-gil builds. (#112049) 2023-12-07 13:47:55 +00:00
pycore_emscripten_signal.h
pycore_emscripten_trampoline.h
pycore_exceptions.h
pycore_faulthandler.h
pycore_fileutils.h gh-118422: Fix run_fileexflags() test (#118429) 2024-04-30 22:32:55 +02:00
pycore_fileutils_windows.h
pycore_floatobject.h GH-115802: JIT "small" code for Windows (GH-115964) 2024-02-29 08:11:28 -08:00
pycore_flowgraph.h gh-119744: move a few functions from compile.c to flowgraph.c (#119745) 2024-05-30 21:55:06 +01:00
pycore_format.h
pycore_frame.h gh-74929: Implement PEP 667 (GH-115153) 2024-05-04 12:12:10 +01:00
pycore_freelist.h gh-111968: Split _Py_async_gen_asend_freelist out of _Py_async_gen_fr… (gh-115546) 2024-02-17 10:03:10 +09:00
pycore_function.h gh-117657: Disable the function/code cache in free-threaded builds (#118301) 2024-05-03 16:21:04 -04:00
pycore_gc.h gh-117657: Fix race involving immortalizing objects (#119927) 2024-06-03 20:58:41 +00:00
pycore_genobject.h GH-115802: JIT "small" code for Windows (GH-115964) 2024-02-29 08:11:28 -08:00
pycore_getopt.h
pycore_gil.h gh-116322: Enable the GIL while loading C extension modules (#118560) 2024-05-06 23:07:23 -04:00
pycore_global_objects.h
pycore_global_objects_fini_generated.h gh-71587: Drop local reference cache to _strptime module in _datetime (gh-120224) 2024-06-12 10:46:39 -06:00
pycore_global_strings.h gh-71587: Drop local reference cache to _strptime module in _datetime (gh-120224) 2024-06-12 10:46:39 -06:00
pycore_hamt.h
pycore_hashtable.h
pycore_identifier.h gh-112026: Restore removed private C API (#112115) 2023-11-15 16:38:31 +00:00
pycore_import.h gh-117657: Fix TSAN race involving import lock (#118523) 2024-06-06 13:40:58 -04:00
pycore_importdl.h gh-117953: Track Extra Details in Global Extensions Cache (gh-118532) 2024-05-04 21:24:02 +00:00
pycore_initconfig.h Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_instruction_sequence.h gh-117901: Add option for compiler's codegen to save nested instruction sequences for introspection (#118007) 2024-04-24 09:46:17 +00:00
pycore_instruments.h Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_interp.h gh-117657: Make Py_TYPE and Py_SET_TYPE thread safe (GH-120165) 2024-06-12 20:41:07 +08:00
pycore_intrinsics.h gh-116126: Implement PEP 696 (#116129) 2024-05-03 06:17:32 -07:00
pycore_jit.h GH-112354: Initial implementation of warm up on exits and trace-stitching (GH-114142) 2024-02-20 09:39:55 +00:00
pycore_list.h gh-117657: Fix TSAN list set failure (#118260) 2024-05-02 13:03:05 -07:00
pycore_llist.h gh-111964: Implement stop-the-world pauses (gh-112471) 2024-01-23 11:08:23 -07:00
pycore_lock.h Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_long.h gh-119336: Restore removed _PyLong_NumBits() function (#119418) 2024-05-30 14:48:18 +00:00
pycore_memoryobject.h
pycore_mimalloc.h gh-117657: Fix race involving GC and heap initialization (#119923) 2024-06-04 09:42:13 -04:00
pycore_modsupport.h gh-111956: Add thread-safe one-time initialization. (gh-111960) 2023-11-16 12:19:54 -07:00
pycore_moduleobject.h gh-116322: Add Py_mod_gil module slot (#116882) 2024-05-03 11:30:55 -04:00
pycore_namespace.h
pycore_object.h gh-117657: Make PyType_HasFeature atomic (GH-120210) 2024-06-13 17:29:19 +08:00
pycore_object_alloc.h gh-112529: Use GC heaps for GC allocations in free-threaded builds (gh-114157) 2024-01-21 01:14:45 +09:00
pycore_object_stack.h gh-111968: Refactor _PyXXX_Fini to integrate with _PyObject_ClearFreeLists (gh-114899) 2024-02-10 00:57:04 +00:00
pycore_object_state.h gh-111968: Rename freelist related struct names to Eric's suggestion (gh-115329) 2024-02-14 00:32:51 +00:00
pycore_obmalloc.h gh-113055: Use pointer for interp->obmalloc state (gh-113412) 2024-01-26 19:38:14 -08:00
pycore_obmalloc_init.h gh-113055: Use pointer for interp->obmalloc state (gh-113412) 2024-01-26 19:38:14 -08:00
pycore_opcode_metadata.h gh-119821: Support non-dict globals in LOAD_FROM_DICT_OR_GLOBALS (#119822) 2024-05-31 14:05:24 -07:00
pycore_opcode_utils.h gh-119180: PEP 649 compiler changes (#119361) 2024-06-11 13:06:49 +00:00
pycore_optimizer.h gh-119258: Eliminate Type Guards in Tier 2 Optimizer with Watcher (GH-119365) 2024-06-08 17:41:45 +08:00
pycore_parking_lot.h gh-110850: Cleanup pycore_time.h includes (#115724) 2024-02-20 16:50:43 +00:00
pycore_parser.h
pycore_pathconfig.h
pycore_pyarena.h
pycore_pyatomic_ft_wrappers.h gh-117657: Make PyType_HasFeature atomic (GH-120210) 2024-06-13 17:29:19 +08:00
pycore_pybuffer.h gh-76785: Rename _xxsubinterpreters to _interpreters (gh-117791) 2024-04-24 16:18:24 +00:00
pycore_pyerrors.h gh-116809: Restore removed _PyErr_ChainExceptions1() function (#116900) 2024-03-16 21:37:11 +01:00
pycore_pyhash.h gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
pycore_pylifecycle.h Remove more remnants of deepfreeze (#118159) 2024-04-22 12:17:57 -07:00
pycore_pymath.h
pycore_pymem.h gh-112075: Support freeing object memory via QSBR (#116344) 2024-03-08 09:56:36 -08:00
pycore_pymem_init.h gh-115103: Implement delayed free mechanism for free-threaded builds (#115367) 2024-02-20 13:04:37 -05:00
pycore_pystate.h gh-76785: Rename _xxsubinterpreters to _interpreters (gh-117791) 2024-04-24 16:18:24 +00:00
pycore_pystats.h
pycore_pythonrun.h
pycore_pythread.h Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_qsbr.h gh-117657: Fix QSBR race condition (#118843) 2024-05-10 10:26:35 -04:00
pycore_range.h
pycore_runtime.h gh-93502: Add new C-API functions to trace object creation and destruction (#115945) 2024-05-02 19:30:00 +02:00
pycore_runtime_init.h gh-93502: Add new C-API functions to trace object creation and destruction (#115945) 2024-05-02 19:30:00 +02:00
pycore_runtime_init_generated.h gh-71587: Drop local reference cache to _strptime module in _datetime (gh-120224) 2024-06-12 10:46:39 -06:00
pycore_semaphore.h gh-110850: Cleanup pycore_time.h includes (#115724) 2024-02-20 16:50:43 +00:00
pycore_setobject.h gh-118527: Intern code consts in free-threaded build (#118667) 2024-05-06 20:12:39 -04:00
pycore_signal.h
pycore_sliceobject.h GH-115802: JIT "small" code for Windows (GH-115964) 2024-02-29 08:11:28 -08:00
pycore_stackref.h gh-117139: Fix missing semicolon (GH-118573) 2024-05-04 15:45:49 +00:00
pycore_strhex.h
pycore_structseq.h
pycore_symtable.h gh-120029: remove unused macros in `symtable.c` (#120222) 2024-06-12 09:23:45 -04:00
pycore_sysmodule.h
pycore_time.h gh-110850: Remove _PyTime_TimeUnchecked() function (#118552) 2024-05-05 12:15:19 +02:00
pycore_token.h
pycore_traceback.h
pycore_tracemalloc.h
pycore_tstate.h gh-117439: Make refleak checking thread-safe without the GIL (#117469) 2024-04-08 12:11:36 -04:00
pycore_tuple.h gh-116381: Remove bad specializations, add fail stats (GH-116464) 2024-03-08 00:21:21 +08:00
pycore_typeobject.h gh-120161: Fix a Crash in the _datetime Module (gh-120182) 2024-06-14 13:29:09 -06:00
pycore_typevarobject.h gh-118895: Call PyType_Ready() on typing.NoDefault (#118897) 2024-05-10 08:42:00 -07:00
pycore_ucnhash.h gh-111972: Make Unicode name C APIcapsule initialization thread-safe (#112249) 2023-11-30 11:12:49 +01:00
pycore_unicodeobject.h Fix typos in comments (#120188) 2024-06-07 10:19:41 +02:00
pycore_unicodeobject_generated.h gh-71587: Drop local reference cache to _strptime module in _datetime (gh-120224) 2024-06-12 10:46:39 -06:00
pycore_unionobject.h gh-105858: Expose some union-related objects as internal APIs (GH-116025) 2024-02-28 09:56:40 +00:00
pycore_uop_ids.h GH-119258: Handle STORE_ATTR_WITH_HINT in tier two (GH-119481) 2024-05-28 12:47:54 -07:00
pycore_uop_metadata.h gh-119821: Support non-dict globals in LOAD_FROM_DICT_OR_GLOBALS (#119822) 2024-05-31 14:05:24 -07:00
pycore_warnings.h gh-116664: Make module state Py_SETREF's in _warnings thread-safe (#116959) 2024-03-28 15:05:08 +00:00
pycore_weakref.h gh-118789: Restore hidden _PyWeakref_ClearRef (#118797) 2024-05-10 15:54:18 +02:00