New submission from Gregory P. Smith <g...@krypto.org>:

I'm spawning a dicussion buried in the way too long thread of 
https://bugs.python.org/issue6721 over here into its own specific issue to 
treat as a 3.7 release blocker for a rollback or repair decision before 3.7.4.

https://github.com/python/cpython/commit/3b699932e5ac3e76031bbb6d700fbea07492641d

I believe that was released in 3.7.1 is leading to a behavior regression for an 
application (the Fedora installer's libreswan kvmrunner?).  Full details can be 
found in the messages of the other issue starting with:
  https://bugs.python.org/issue6721#msg329474

TL;DR - logging.Handler instances each have their own threading.Rlock. 
libreswan implements at least one logging.Handler subclass.  That subclass's 
custom emit() implementation directly calls potentially many other sub-handlers 
emit() methods.  Some of those emit() methods (such as logging.StreamHandler) 
call flush() which acquires the handler's lock.

So they've got a dependency between these two locks, the first's must be 
acquired before the second.

But the logging module APIs have no concept of sub-handlers and lock ordering.

I see many flaws with the libreswan code's design (I'm already ignoring the 
futility of threading + fork) but this still caused a behavior regression in 
the stable 3.7 release.

(more comments coming as followups to avoid a wall of text with too many topics)

----------
assignee: gregory.p.smith
components: Library (Lib)
keywords: 3.7regression
messages: 339472
nosy: cagney, gregory.p.smith, ned.deily, vstinner
priority: release blocker
severity: normal
status: open
title: logging regression with threading + fork are mixed in 3.7.1rc2 (deadlock 
potential)
type: behavior
versions: Python 3.7

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

Reply via email to