>> 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 _PyThreadState_Current, which may not point to the current
>> thread if the current thread has released the GIL.
> 
> Ah? Where does _PyThreadState_Current 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 _PyThreadState_Current can be NULL if the GIL is released.
> In this case, _Py_DumpBacktrace() just do nothing. There is also a
> gil_last_holder 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
> Py_FatalError() or in the fault handler.

I agree.

Regards,
Martin
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to