STINNER Victor <vstin...@redhat.com> added the comment:

> I'm expecting a "this is not a bug, why would the interpreter not be 
> initialized",

this is not a bug, why would the interpreter not be initialized, as documented 
at:
https://docs.python.org/dev/c-api/init.html

> but it would be nice to get a friendly error message since this is a public 
> API.
IF so, am also happy to submit a PR with a fix

Python has a *very large* C API. It doesn't seem worth it to me to modify every 
single Python function to detect when the API is misused.

There is maybe room for some clever tricks for some specific cases. For 
example, modify PyMem_Malloc and PyObject_Malloc default allocators to have an 
implementation with calls Py_FatalError() with a clear error message like 
"Py_Initialize must be called before using the Python C API". I modified Python 
internals to only use PyMem_RawMalloc during early Python initialization, and 
we can reconfigure PyMem_Malloc and PyObject_Malloc during Py_Initialize().

But... according to your backtrace, it wouldn't help for your exact use case: 
call PyUnicode_DecodeFSDefault() before Py_Initialize(). The crash occurs 
before PyMem_Malloc or PyObject_Malloc is called. I don't see any other clever 
tricks which would have no impact on performance when the API is properly used.


... I suggest to close this issue.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue36386>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to