mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Ignore assertions from python threading when looking for leaked threads. (#2130)
While looking for leaked resources (threads) after shutdown and before restart we in some cases get an assertion in the python threading module where we find a thread marked as running at the python level but it has no associated thread at the C level.
This commit is contained in:
parent
c7cc045acd
commit
05946ae5a2
@ -321,10 +321,18 @@ def try_to_restart():
|
|||||||
# Count remaining threads, ideally there should only be one non-daemonized
|
# Count remaining threads, ideally there should only be one non-daemonized
|
||||||
# thread left (which is us). Nothing we really do with it, but it might be
|
# thread left (which is us). Nothing we really do with it, but it might be
|
||||||
# useful when debugging shutdown/restart issues.
|
# useful when debugging shutdown/restart issues.
|
||||||
|
try:
|
||||||
nthreads = sum(thread.isAlive() and not thread.isDaemon()
|
nthreads = sum(thread.isAlive() and not thread.isDaemon()
|
||||||
for thread in threading.enumerate())
|
for thread in threading.enumerate())
|
||||||
if nthreads > 1:
|
if nthreads > 1:
|
||||||
sys.stderr.write("Found {} non-daemonic threads.\n".format(nthreads))
|
sys.stderr.write(
|
||||||
|
"Found {} non-daemonic threads.\n".format(nthreads))
|
||||||
|
|
||||||
|
# Somehow we sometimes seem to trigger an assertion in the python threading
|
||||||
|
# module. It seems we find threads that have no associated OS level thread
|
||||||
|
# which are not marked as stopped at the python level.
|
||||||
|
except AssertionError:
|
||||||
|
sys.stderr.write("Failed to count non-daemonic threads.\n")
|
||||||
|
|
||||||
# Send terminate signal to all processes in our process group which
|
# Send terminate signal to all processes in our process group which
|
||||||
# should be any children that have not themselves changed the process
|
# should be any children that have not themselves changed the process
|
||||||
|
Loading…
x
Reference in New Issue
Block a user