> 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

Reply via email to