WIP: BUG: Prevent running initialize_numeric_types more than once #11377
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This code
will segfault on CPython3. The code calls
PyInit_multiarray
a second time, which gets toinitialize_numeric_types
, which tries to reinitialize all thePy*ArrType_Type
s. NormallyPyType_Ready
will check thetp_flags
for initialized type objects, butinitialize_numeric_types
resets the flags and many more pointers. The easiest fix is to check if one of the types has already been initialized.