This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: test_concurrent_futures.test_context_manager_shutdown() hangs on OpenIndiana
Type: Stage:
Components: Tests Versions: Python 3.3
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: jcea, neologix, pitrou, vstinner
Priority: normal Keywords:

Created on 2011-05-13 14:14 by vstinner, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
test_thread_oom.c neologix, 2011-05-14 07:22
Messages (6)
msg135911 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-05-13 14:14
test_concurrent_futures of Python 3.3 (rev [6d8678555c04]) hangs on OpenIndiana. I dumped manually the tracebacks of the parent process (test_concurrent_futures) and of the 3 child processes. In the parent process, the test hangs when exiting the context manager:

---------------------------------------------
    def test_context_manager_shutdown(self):
        with futures.ProcessPoolExecutor(max_workers=5) as e:
            processes = e._processes
            self.assertEqual(list(e.map(abs, range(-5, 5))),
                             [5, 4, 3, 2, 1, 0, 1, 2, 3, 4])
            ####### HERE #########
        for p in processes:
            p.join()
---------------------------------------------

I may be related to issue #9205.

Have fun with the following tracebacks!

[123/354] test_concurrent_futures

=== Parent ===

Thread 0x000004af:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x000004ae:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x000004a0:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000049f:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000049e:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000049d:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000479:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000478:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000477:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000476:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000475:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000474:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000473:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000472:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000471:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000470:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000046f:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000046e:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000046d:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000046c:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000044d:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000044c:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000044b:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x0000044a:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000449:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000448:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000447:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000446:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000445:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000444:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Current thread 0x00000001:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/threading.py", line 851 in join
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 352 in shutdown
    self._queue_management_thread.join()
  File "/home/haypo/cpython/Lib/concurrent/futures/_base.py", line 570 in __exit__
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 164 in test_context_manager_shutdown
  File "/home/haypo/cpython/Lib/unittest/case.py", line 407 in _executeTestPart
  File "/home/haypo/cpython/Lib/unittest/case.py", line 462 in run
  File "/home/haypo/cpython/Lib/unittest/case.py", line 514 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/test/support.py", line 1099 in run
  File "/home/haypo/cpython/Lib/test/support.py", line 1187 in _run_suite
  File "/home/haypo/cpython/Lib/test/support.py", line 1213 in run_unittest
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 618 in test_main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1044 in runtest_inner
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 838 in runtest
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 662 in main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1625 in <module>
  File "/home/haypo/cpython/Lib/runpy.py", line 73 in _run_code
  File "/home/haypo/cpython/Lib/runpy.py", line 160 in _run_module_as_main

=== Child #1 =========

Thread 0x00000445:

Thread 0x00000444:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/threading.py", line 423 in wait
  File "/home/haypo/cpython/Lib/threading.py", line 685 in start
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 187 in _start_thread
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 107 in put
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 168 in _add_call_item_to_queue
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 206 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Current thread 0x00000001:
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 115 in get
    self._rlock.acquire()
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 122 in _process_worker
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 118 in run
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 263 in _bootstrap
  File "/home/haypo/cpython/Lib/multiprocessing/forking.py", line 126 in __init__
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 134 in start
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 323 in _adjust_process_count
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 341 in submit
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in <listcomp>
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in _prime_executor
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 64 in setUp
  File "/home/haypo/cpython/Lib/unittest/case.py", line 407 in _executeTestPart
  File "/home/haypo/cpython/Lib/unittest/case.py", line 460 in run
  File "/home/haypo/cpython/Lib/unittest/case.py", line 514 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/test/support.py", line 1099 in run
  File "/home/haypo/cpython/Lib/test/support.py", line 1187 in _run_suite
  File "/home/haypo/cpython/Lib/test/support.py", line 1213 in run_unittest
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 618 in test_main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1044 in runtest_inner
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 838 in runtest
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 662 in main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1625 in <module>
  File "/home/haypo/cpython/Lib/runpy.py", line 73 in _run_code
  File "/home/haypo/cpython/Lib/runpy.py", line 160 in _run_module_as_main

=== Child #2 =========

Thread 0x00000445:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000444:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Current thread 0x00000001:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 117 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 122 in _process_worker
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 118 in run
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 263 in _bootstrap
  File "/home/haypo/cpython/Lib/multiprocessing/forking.py", line 126 in __init__
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 134 in start
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 323 in _adjust_process_count
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 341 in submit
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in <listcomp>
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in _prime_executor
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 64 in setUp
  File "/home/haypo/cpython/Lib/unittest/case.py", line 407 in _executeTestPart
  File "/home/haypo/cpython/Lib/unittest/case.py", line 460 in run
  File "/home/haypo/cpython/Lib/unittest/case.py", line 514 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/test/support.py", line 1099 in run
  File "/home/haypo/cpython/Lib/test/support.py", line 1187 in _run_suite
  File "/home/haypo/cpython/Lib/test/support.py", line 1213 in run_unittest
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 618 in test_main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1044 in runtest_inner
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 838 in runtest
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 662 in main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1625 in <module>
  File "/home/haypo/cpython/Lib/runpy.py", line 73 in _run_code
  File "/home/haypo/cpython/Lib/runpy.py", line 160 in _run_module_as_main

=== Child #3 =========

Thread 0x00000445:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 252 in _feed
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Thread 0x00000444:
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 364 in _recv
    chunk = read(self._handle, remaining)
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 385 in _recv_bytes
  File "/home/haypo/cpython/Lib/multiprocessing/connection.py", line 260 in recv
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 378 in get
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 208 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

Current thread 0x00000001:
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 115 in get
    self._rlock.acquire()
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 122 in _process_worker
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 118 in run
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 263 in _bootstrap
  File "/home/haypo/cpython/Lib/multiprocessing/forking.py", line 126 in __init__
  File "/home/haypo/cpython/Lib/multiprocessing/process.py", line 134 in start
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 323 in _adjust_process_count
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 341 in submit
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in <listcomp>
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 77 in _prime_executor
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 64 in setUp
  File "/home/haypo/cpython/Lib/unittest/case.py", line 407 in _executeTestPart
  File "/home/haypo/cpython/Lib/unittest/case.py", line 460 in run
  File "/home/haypo/cpython/Lib/unittest/case.py", line 514 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 105 in run
  File "/home/haypo/cpython/Lib/unittest/suite.py", line 67 in __call__
  File "/home/haypo/cpython/Lib/test/support.py", line 1099 in run
  File "/home/haypo/cpython/Lib/test/support.py", line 1187 in _run_suite
  File "/home/haypo/cpython/Lib/test/support.py", line 1213 in run_unittest
  File "/home/haypo/cpython/Lib/test/test_concurrent_futures.py", line 618 in test_main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1044 in runtest_inner
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 838 in runtest
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 662 in main
  File "/home/haypo/cpython/Lib/test/regrtest.py", line 1625 in <module>
  File "/home/haypo/cpython/Lib/runpy.py", line 73 in _run_code
  File "/home/haypo/cpython/Lib/runpy.py", line 160 in _run_module_as_main
msg135933 - (view) Author: Charles-François Natali (neologix) * (Python committer) Date: 2011-05-13 17:23
Interesting.
There's something weird with the first child:

=== Child #1 =========

Thread 0x00000445:

Thread 0x00000444:
  File "/home/haypo/cpython/Lib/threading.py", line 237 in wait
    waiter.acquire()
  File "/home/haypo/cpython/Lib/threading.py", line 423 in wait
  File "/home/haypo/cpython/Lib/threading.py", line 685 in start
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 187 in _start_thread
  File "/home/haypo/cpython/Lib/multiprocessing/queues.py", line 107 in put
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 168 in _add_call_item_to_queue
  File "/home/haypo/cpython/Lib/concurrent/futures/process.py", line 206 in _queue_management_worker
  File "/home/haypo/cpython/Lib/threading.py", line 690 in run
  File "/home/haypo/cpython/Lib/threading.py", line 737 in _bootstrap_inner
  File "/home/haypo/cpython/Lib/threading.py", line 710 in _bootstrap

See the last thread created (0x00000445)?
0x00000444 bootstrapped 0x00000445, and is waiting for it to signal that it's running.
Since there's no backtrace for this thread, it means that it's stuck inside t_bootstrap or really early in the call stack (or didn't start at all?).
You don't have a coredump, do you?
I guess it's not reproductible either?
msg135946 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-05-13 22:42
Oh, I have "no more memory" errors on this VM especially on fork. test_concurrent_futures.test_context_manager_shutdown() failure should be related to a memory allocation error. I tried my faulthandler using SIGUSR1 to get more information, but send the send does kill the process instead of printing the traceback when test_concurrent_futures hangs, whereas it works as expected (dump tracebacks) a few tests before...
msg135962 - (view) Author: Charles-François Natali (neologix) * (Python committer) Date: 2011-05-14 07:22
This makes sense.
I was suspecting a system limit exhaustion, maybe OOM or maximum number of threads, something like that.
But at least on Linux, in OOM condition, the process would either get nuked by the OOM-killer, or pthread_create would bail out with ENOMEM (when allocating the stack for example), so we would be able to - somewhat - catch the error and get an exception (well, OOM condition is also often a sort of "undefined behaviour", so we can't really make a guarantee on the state of the interpreter when it's hit).
Out of curioisity, could you try the attached test to see how it behaves on your VM?
Usage: ./test_thread_oom <number of threads to create>
On Linux it fails with ENOMEM "Resource temporarily unavailable".
msg136871 - (view) Author: Charles-François Natali (neologix) * (Python committer) Date: 2011-05-25 16:51
Since it's a OOM issue, can we close?
msg136907 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-05-25 21:49
> Since it's a OOM issue, can we close?

Yes, I don't want to investigate, and I already changed the size of my swap partition, so I cannot reproduce the bug anymore.
History
Date User Action Args
2022-04-11 14:57:17adminsetgithub: 56280
2011-05-25 21:49:49vstinnersetstatus: open -> closed
resolution: wont fix
messages: + msg136907
2011-05-25 16:51:01neologixsetmessages: + msg136871
2011-05-14 07:22:07neologixsetfiles: + test_thread_oom.c

messages: + msg135962
2011-05-13 22:42:14vstinnersetmessages: + msg135946
2011-05-13 17:23:47neologixsetnosy: + neologix
messages: + msg135933
2011-05-13 15:47:12jceasetnosy: + jcea
2011-05-13 14:18:53vstinnersettitle: test_concurrent_futures hangs on OpenIndiana -> test_concurrent_futures.test_context_manager_shutdown() hangs on OpenIndiana
2011-05-13 14:14:54vstinnercreate