[issue34037] test_asyncio: test_run_in_executor_cancel() leaked a dangling thread on AMD64 FreeBSD 10.x Shared 3.7

2018-07-12 Thread STINNER Victor


STINNER Victor  added the comment:

It's easy to reproduce the issue on Linux:

diff --git a/Lib/test/test_asyncio/test_events.py 
b/Lib/test/test_asyncio/test_events.py
index 11cd950df1..df4c2b9849 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -359,7 +359,7 @@ class EventLoopTestsMixin:
 called = True
 
 def run():
-time.sleep(0.05)
+time.sleep(1.0)
 
 f2 = self.loop.run_in_executor(None, run)
 f2.cancel()


The problem is that BaseEventLoop.close() shutdowns its default executor  
without waiting:

def close(self):
...
executor = self._default_executor
if executor is not None:
self._default_executor = None
executor.shutdown(wait=True)

I fixed a similar issue in socketserver:

* bpo-31233: for socketserver.ThreadingMixIn
* bpo-31151: for socketserver.ForkingMixIn 
* bpo-33540: add block_on_close attr to socketserver

I suggest to wait by default, but maybe also add a block_on_close attribute to 
BaseEventLoop (default: False) just for backward compatibility.

What do you think Yury, Andrew, and Guido?

--
nosy: +gvanrossum

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34037] test_asyncio: test_run_in_executor_cancel() leaked a dangling thread on AMD64 FreeBSD 10.x Shared 3.7

2018-07-03 Thread STINNER Victor


New submission from STINNER Victor :

AMD64 FreeBSD 10.x Shared 3.7:
http://buildbot.python.org/all/#/builders/124/builds/410

...
test_remove_fds_after_closing 
(test.test_asyncio.test_events.KqueueEventLoopTests) ... ok
test_run_in_executor (test.test_asyncio.test_events.KqueueEventLoopTests) ... ok
test_run_in_executor_cancel 
(test.test_asyncio.test_events.KqueueEventLoopTests) ...

  Warning -- threading_cleanup() failed to cleanup 1 threads (count: 1, 
dangling: 2)
  Dangling thread: 
  Dangling thread: <_MainThread(MainThread, started 34393318400)>

ok
test_run_until_complete (test.test_asyncio.test_events.KqueueEventLoopTests) 
... ok
test_run_until_complete_nesting 
(test.test_asyncio.test_events.KqueueEventLoopTests) ... ok
...
1 test altered the execution environment:
test_asyncio

--
components: Tests, asyncio
messages: 321006
nosy: asvetlov, vstinner, yselivanov
priority: normal
severity: normal
status: open
title: test_asyncio: test_run_in_executor_cancel() leaked a dangling thread on 
AMD64 FreeBSD 10.x Shared 3.7
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com