[Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Mon Dec 20 08:22:40 CET 2010


Looking at your function list, my other concern is that you are calling Python API without holding the GIL, IIUC. In particular, you are accessing PyThreadStateCurrent, which may not point to the current thread if the current thread has released the GIL. Ah? Where does PyThreadStateCurrent point to if the GIL is not hold when the fault handler is called?

The GIL is likely held by a different thread, then. _PyThreadState_Current will point to the state of this other thread.

It looks that PyThreadStateCurrent can be NULL if the GIL is released. In this case, PyDumpBacktrace() just do nothing. There is also a gillastholder variable: can it be used to get the thread state (especially if the thread state was deleted)?

Of this thread? I don't think so. gil_last_holder might also refer to a different thread.

I don't think that it will possible the acquire the GIL in PyFatalError() or in the fault handler.

I agree.

Regards, Martin



More information about the Python-Dev mailing list