Steve Stagg <[email protected]> added the comment:
It's one of those ugly multithreading issues that's really hard to reason about
unfortunately.
In this case, it's not the size of the loop so much as you've discovered a way
to make it very likely that the background thread is doing IO (and holding the
IO lock) during shutdown.
Here's an example that reproduces the abort for me (again, it's multithreading,
so you may have a different experience) with a smaller range value:
---
import sys, threading
def run():
for i in range(100):
sys.stderr.write(' =.= ' * 10000)
if __name__ == '__main__':
threading.Thread(target=run, daemon=True).start()
---
The problem with daemon threads is that they get killed fairly suddenly and
without much ability to correct bad state during shutdown, so any fix here
would likely be around re-visiting the thread termination code as linked in the
issue above.
There may be a fix possible, but it's going to be a complex thread state
management fix, not just a limit on loop counts, unfortunately
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue42717>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com