New submission from Jonathan <jonat...@kc8onw.net>: In multiprocessing.JoinableQueue when task_done is called self._unfinished_tasks.acquire(False) is called non-blocking. My program reliably crashes with the "task_done() called too many times" message. If I change the .acquire() call to True (blocking) then my program no longer crashes and I have not noticed any adverse effects. I don't know if this would be considered a race condition or something else but it does lead to crashes even in correct use scenarios.
(Code snippet follows for context, line 292 is the critical one for me) def task_done(self): self._cond.acquire() try: if not self._unfinished_tasks.acquire(False): raise ValueError('task_done() called too many times') if self._unfinished_tasks._semlock._is_zero(): ---------- components: None messages: 95059 nosy: jonat...@kc8onw.net severity: normal status: open title: Multiprocessing Joinable race condition? type: behavior versions: Python 3.1 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue7292> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com