E. Paine <paineeli...@gmail.com> added the comment:

Thanks Steve for your explanation. I had a quick experiment with the 
ENTER_PYTHON definition and initially just added a call to PyThreadState_Get if 
the tstate was NULL. This still crashed the interpreter with the following 
error (which I think reaffirms Steve's explanation):

Fatal Python error: PyThreadState_Get: the function must be called with the GIL 
held, but the GIL is released (the current Python thread state is NULL)

To work-around this error, I temporarily acquired the GIL and then released it 
after the call to PyThreadState_Get. The result worked correctly and can be 
found in the attached diff. I am not saying that the attached diff is the 
solution, but I don't think we need to stop using tstate in favour of the 
gstate introduced in the PR.

> I could not reproduce the crash without showing any non-tk dialog.

That would help explain why I cannot reproduce it on Linux - it is differences 
in the windowing API under Tcl not some platform-specific code in Tcl/Tk or 
_tkinter.

----------
Added file: https://bugs.python.org/file49350/tstate_acquire.diff

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

Reply via email to