GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||
GeezerVison is showing github.com — ThreadPoolExecutor marks interpreter as shutdown before non daemon threads exit · Issue #148280 · python/cpython Open Labels 3.15bugs and security fixesbugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytriagedThe issue has been accepted as valid by a triager.The issue has been accepted as valid by a triager.type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error DescriptionBug reportBug description:When the main thread exits, concurrent.futures.ThreadPoolExecutor mistakenly marks the interpreter as shutdown, regardless of if there are non daemon threads still executing, this causes any work submitted to the executor to fail with PoC: import time import threading from concurrent.futures import ThreadPoolExecutor def work(): print("Starting work") time.sleep(1) print("Work complete") def worker_thread(): # sleep a little to give the main thread time to exit time.sleep(1) executor = ThreadPoolExecutor() future = executor.submit(work) def main(): thread = threading.Thread(target=worker_thread) thread.start() # main thread exits now if __name__ == "__main__": main() Result Exception in thread Thread-1 (worker_thread): Traceback (most recent call last): File "/usr/lib/python3.14/threading.py", line 1081, in _bootstrap_inner self._context.run(self.run) ~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "/usr/lib/python3.14/threading.py", line 1023, in run self._target(*self._args, **self._kwargs) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/*****/*****/implementation/./bug.py", line 18, in worker_thread future = executor.submit(work) File "/usr/lib/python3.14/concurrent/futures/thread.py", line 207, in submit raise RuntimeError('cannot schedule new futures after ' 'interpreter shutdown') RuntimeError: cannot schedule new futures after interpreter shutdown Interpreter is marked as shutdown here: cpython/Lib/concurrent/futures/thread.py Lines 23 to 37 in f46a17b
Expected Result: All non daemon threads should be able to use ThreadPoolExecutor until they exit. example was tested on 3.14.0 CPython versions tested on:3.14 Operating systems tested on:Linux Activity
MetadataMetadataAssigneesLabels3.15bugs and security fixesbugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytriagedThe issue has been accepted as valid by a triager.The issue has been accepted as valid by a triager.type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error Projects
MilestoneRelationshipsDevelopmentIssue actions | ||||||||||||||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |