On 23-03-2023 13:33, Barry Scott wrote:


On 23 Mar 2023, at 08:46, Arnaud Loonstra <arn...@sphaero.org> wrote:

Hi all,

I'm running in a crash due to a ResourceWarning (some socket is not closed in a 
used module) after calling PyGILState_Release.

I'm running Python in a native thread (so a thread created by C not Python). 
I'm acquiring the GIL through PyGILState_Ensure before doing any CPYthon calls 
and releasing when finished using PyGILState_Release.

This has worked fine. But now I'm using a python module (openai) which doesn't 
close its socket correctly which results in a ResourceWarning which triggers an 
assert.

In the backtrace  (below) I can see PyGILState_Release is called again. (7) 
while I've already called it (126).

I can make the crash go away by adding

import warnings
warnings.simplefilter("ignore", ResourceWarning)

to my python code. But I'd rather prevent this from happening in the first 
place.

Any suggestion very welcomed cause I'm puzzled.

What 3rd party C extension are you running with?
I'd be surprised if the cpython code was the issue.

Barry

I'm not using any 3rd party extension myself. But the issue is caused by the openai module using the requests module which is not closing sockets:

https://github.com/openai/openai-python/issues/140

I'm not aware what C extensions they might use.

Btw, I've tested this with python 3.8 and 3.11.2.

Rg,

Arnaud
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to