[Python-Dev] Python initialization and embedded Python (original) (raw)

Victor Stinner victor.stinner at gmail.com
Wed Nov 22 04:38:32 EST 2017


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



More information about the Python-Dev mailing list