[3.14] gh-136421: Load _datetime static types during interpreter initialization (GH-136583) (GH-136943)

gh-136421: Load `_datetime` static types during interpreter initialization (GH-136583)

`_datetime` is a special module, because it's the only non-builtin C extension that contains static types. As such, it would initialize static types in the module's execution function, which can run concurrently. Since static type initialization is not thread-safe, this caused crashes. This fixes it by moving the initialization of `_datetime`'s static types to interpreter startup (where all other static types are initialized), which is already properly protected through other locks.
(cherry picked from commit a10960699a)

Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
Miss Islington (bot) 2025-07-22 01:23:05 +02:00 committed by GitHub
parent 718fc5b139
commit ecd97caaf5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 111 additions and 95 deletions

View file

@ -760,6 +760,11 @@ pycore_init_types(PyInterpreterState *interp)
return status;
}
status = _PyDateTime_InitTypes(interp);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
return _PyStatus_OK();
}