> On 28 Oct 2020, at 13:25, Paul Grinberg <gri6...@gmail.com> wrote:
>
>>> I am running into unpredictable behavior with my Python extension module
>>> that wraps around a C++ library that starts a new pthread and, after doing
>>> some work, generates callbacks back into the caller. I've greatly
>>> simplified this to a simplistic example which still demonstrates this
>>> problem. The following will sometimes generate a Fatal Python error:
>>> PyEval_SaveThread: NULL tstate, usually rather quickly. Sometimes it
>>> SIGSEGV on tupledealoc. Occasionally this deadlocks. I am at a loss why.
>>> Does anyone have any ideas?
>
>> You did not say what OS and python version you are working with.
>
> I apologize. I am running this on Ubuntu 18.04 under Python 3.6 (default for
> this Ubuntu's Bionic release) fully updated to the latest provided by
> Ubuntu's standard repos, which is 3.6.9-1~18.04ubuntu1.3. After posting this
> question here I continued investigating this problem and found that when I
> repeat the same test under Python 3.7.3 or 3.8.5 (installed via PyEnv), there
> are no issues. Then, I went back to the most recent 3.6 release which is
> 3.6.12 (also installed via PyEnv) and again saw the issue. This seems to
> suggest that the problem is in 3.6.x Python.
>
>> Why do you need to call PyEval_ThreadsInitialized()? its deprecated.
>>
>> PyInitialize sets up threads unconditionally since 3.7.
>
> I did not realize that PyEval_ThreadsInitialized() is deprecated. However, I
> was also running under 3.6. I will move away from that once I move to a newer
> version of Python
Try calling PyEval_InitThreads() to force the python threading to be all setup.
Barry
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>
--
https://mail.python.org/mailman/listinfo/python-list