Revert "bugfix: Keep registered types until after Py_Finalize(). Fix #4459 (#4486)" (#4501)

This reverts commit b2c1978caa.

See #4500 for background.
This commit is contained in:
Ralf W. Grosse-Kunstleve 2023-02-07 16:55:00 -08:00 committed by GitHub
parent 8a90b36772
commit f8713ec43e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -254,16 +254,13 @@ inline void finalize_interpreter() {
if (builtins.contains(id) && isinstance<capsule>(builtins[id])) { if (builtins.contains(id) && isinstance<capsule>(builtins[id])) {
internals_ptr_ptr = capsule(builtins[id]); internals_ptr_ptr = capsule(builtins[id]);
} }
Py_Finalize();
// Local internals contains data managed by the current interpreter, so we must clear them to // Local internals contains data managed by the current interpreter, so we must clear them to
// avoid undefined behaviors when initializing another interpreter // avoid undefined behaviors when initializing another interpreter
// Must be cleared only after Py_Finalize() so atexit and other hooks can still use
// registered_types
detail::get_local_internals().registered_types_cpp.clear(); detail::get_local_internals().registered_types_cpp.clear();
detail::get_local_internals().registered_exception_translators.clear(); detail::get_local_internals().registered_exception_translators.clear();
Py_Finalize();
if (internals_ptr_ptr) { if (internals_ptr_ptr) {
delete *internals_ptr_ptr; delete *internals_ptr_ptr;
*internals_ptr_ptr = nullptr; *internals_ptr_ptr = nullptr;