2017-11-21 16:57 GMT+01:00 Eric Snow <ericsnowcurrently at gmail.com>:
>> I understand that moving global variables to _PyRuntime helps to
>> clarify how these variables are initialized and then finalized, but
>> memory allocators are a complex corner case.
>> Agreed. I spent a large portion of my time getting the allocators
> right when working on the original _PyRuntime patch. It's tricky
> code.
Oh, I forgot to notify you: when I worked on Py_Main(), I got crashes
because PyMem_RawMalloc() wasn't usable before calling
Py_Initialize(). This is what I call a regresion, and that's why I
started this thread :-)
I fixed the issue by calling _PyRuntime_Initialize() as the very first
function in main().
I also had to add _PyMem_GetDefaultRawAllocator() to get a
deterministic memory allocator, rather than depending on the allocator
set an application embedding Python, we must be sure that the same
allocator is used to initialize and finalize Python.
Victor