STINNER Victor <vstin...@python.org> added the comment:

Creating an _interpreters.InterpreterID object calls newinterpid() which calls 
_PyInterpreterState_IDIncref(interp).

_PyInterpreterState_IDIncref(interp) does nothing if interp->id_mutex is NULL.

Calling _interpreters.get_current() calls interp_get_current() which calls 
_PyInterpreterState_IDInitref().

_PyInterpreterState_IDInitref() creates the id_mutex and initializes 
id_refcount to 0.

Later, when the _interpreters.InterpreterID object is deallocated, 
interpid_dealloc() calls _PyInterpreterState_IDDecref(). Since id_mutex was 
created in the meanwhile, _PyInterpreterState_IDDecref() now decrements 
id_refcnt.

... It doesn't work: _PyInterpreterState_IDIncref() should always increase the 
reference count.

----------

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

Reply via email to