New submission from DaRoee <roee.druc...@gmail.com>:

I've recently encountered a weird bug. To make a long story short, I’ve been 
using an external package to make sure my threads stop working in time, and 
appearently it’s been using ctypes.pythonapi.PyThreadState_SetAsyncExc.
There is a slight chance, that this code that is literally injecting an 
exception in the thread, will throw an exception in the handle function of the 
logger, right after the acquire. This will make the whole process deadlocked 
(only the thread with the exception will be able to continue logging) once the 
other threads try to log.

While I totally understand that this is not a casual use case, I think that the 
logger should be able to handle situations such as this...
The good news is that I’ve created a test (attached) that once you run it with 
pytest it’ll reproduce constantly (even though it’s a statistical bug), and the 
solution for this is relatively easy. Once we change the lock to use context 
manager the whole action is much more atomic, making the test pass constantly.

I’d be happy to help solve it, and replace locks to context manager usage 
throughout the file (or whatever the maintainers see fit for this).

----------
components: Library (Lib)
files: reproduction_test.py
messages: 391862
nosy: DaRoee
priority: normal
severity: normal
status: open
title: Deadlock in logging
type: behavior
versions: Python 3.10, Python 3.6, Python 3.7, Python 3.8, Python 3.9
Added file: https://bugs.python.org/file49983/reproduction_test.py

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

Reply via email to