Repository navigation
test_wmi.test_wmi_query_threads() crashed with Windows fatal exception: code 0xc0020043 (RPC_NT_INTERNAL_ERROR) on AMD64 Windows PGO Tailcall 3.x #159118
Copy link
Copy link
Open
Labels
OS-windowstestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
AMD64 Windows PGO Tailcall 3.x: https://buildbot.python.org/#/builders/1870/builds/1504
0:00:35 load avg: 7.92 mem: 657.3 MiB [266/559/2] test_wmi worker non-zero exit code (Exit code 3221356611 (0xC0020043)) -- running (1): test_regrtest (30.2 sec)
test_wmi_query_error (test.test_wmi.WmiTests.test_wmi_query_error) ... ok
test_wmi_query_multiple_rows (test.test_wmi.WmiTests.test_wmi_query_multiple_rows) ... ok
test_wmi_query_not_select (test.test_wmi.WmiTests.test_wmi_query_not_select) ... ok
test_wmi_query_os_version (test.test_wmi.WmiTests.test_wmi_query_os_version) ... ok
test_wmi_query_overflow (test.test_wmi.WmiTests.test_wmi_query_overflow) ... ok
test_wmi_query_repeated (test.test_wmi.WmiTests.test_wmi_query_repeated) ... ok
test_wmi_query_repeated_error (test.test_wmi.WmiTests.test_wmi_query_repeated_error) ... ok
test_wmi_query_threads (test.test_wmi.WmiTests.test_wmi_query_threads) ... Windows fatal exception: code 0xc0020043
Thread 0x000027e8 [ThreadPoolExecutor-0_3] (most recent call first):
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\test_wmi.py", line 17 in wmi_exec_query
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 73 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 86 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 119 in _worker
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1160 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1218 in _bootstrap_inner
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1180 in _bootstrap
Thread 0x000026c8 [ThreadPoolExecutor-0_2] (most recent call first):
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\test_wmi.py", line 17 in wmi_exec_query
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 73 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 86 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 119 in _worker
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1160 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1218 in _bootstrap_inner
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1180 in _bootstrap
Thread 0x00000b14 [ThreadPoolExecutor-0_1] (most recent call first):
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\test_wmi.py", line 17 in wmi_exec_query
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 73 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 86 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 119 in _worker
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1160 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1218 in _bootstrap_inner
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1180 in _bootstrap
Thread 0x00002b24 [ThreadPoolExecutor-0_0] (most recent call first):
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\test_wmi.py", line 17 in wmi_exec_query
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 73 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 86 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\thread.py", line 119 in _worker
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1160 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1218 in _bootstrap_inner
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 1180 in _bootstrap
Thread 0x00001c94 (most recent call first):
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\threading.py", line 363 in wait
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\concurrent\futures\_base.py", line 456 in result
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\test_wmi.py", line 89 in test_wmi_query_threads
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\case.py", line 637 in _callTestMethod
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\case.py", line 691 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\case.py", line 747 in __call__
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\suite.py", line 122 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\suite.py", line 84 in __call__
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\suite.py", line 122 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\suite.py", line 84 in __call__
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\unittest\runner.py", line 259 in run
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 84 in _run_suite
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 42 in run_unittest
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 162 in test_func
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 118 in regrtest_runner
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 165 in _load_run_test
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 212 in _runtest_env_changed_exc
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 321 in _runtest
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\single.py", line 350 in run_single_test
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\worker.py", line 99 in worker_process
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\worker.py", line 137 in main
File "C:\bbarea\3.x.itamaro-win64-srv-22-aws.tailcall.pgo\build\Lib\test\libregrtest\worker.py", line 141 in <module>
File "<frozen runpy>", line 87 in _run_code
File "<frozen runpy>", line 201 in _run_module_as_main
Current thread's C stack trace (most recent call first):
<cannot get C stack on this system>
Linked PRs
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
OS-windowstestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
[-]test_wmi.test_wmi_query_threads() crashed with Windows fatal exception: code 0xc0020043 on AMD64 Windows PGO Tailcall 3.x[/-][+]test_wmi.test_wmi_query_threads() crashed with Windows fatal exception: code 0xc0020043 (RPC_NT_INTERNAL_ERROR) on AMD64 Windows PGO Tailcall 3.x[/+]vstinner commentedon Oct 10, 2026
It's the RPC_NT_INTERNAL_ERROR.
utam-1 commentedon Oct 13, 2026
Hello @vstinner , I was able to partially reproduce this behaviour, please have a look (Windows 11, Version: 23H2):
This was achieved by running concurrent queries under high CPU load (trying to simulate Buildbot's behaviour)
Based on my analysis of
_wmimodule.cppmaybe queries time out and leave runaway background threads behind. Those threads can later mess with reused handles, and with no error-catching, the program crashes. (_wmi_exec_query_impl,wait_event(data.connectEvent, 100)), so maybe it is plausible to relax this timeout?I'd like to work on this(and open up a PR if possible), but would like to discuss the approach first with you so that we can figure out what to change.
Disclosure: I have taken help from AI agents to research on this issue.
vstinner commentedon Oct 13, 2026
Can you share the script that you used to reproduce the issue?
utam-1 commentedon Oct 13, 2026
This is the script I've used, if I'm running it again I have got kind of similar output related to
RPC_NT_INTERNAL_ERROR.vstinner commentedon Oct 14, 2026
Another error on AMD64 Windows10 3.x: https://buildbot.python.org/#/builders/146/builds/14554
The test passed when re-run in verbose mode:
utam-1 commentedon Oct 15, 2026
Hello @vstinner, I investigated this issue further, check
PC/_wmimodule.cpp,hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);. I've looked into the STA architecture, it creates a hidden window class to communicate across COM. So every time Python ran a query, it :"made a new thread, built a hidden window for it (STA), ran the query, tore everything down". Doing this over and over, especially when the computer is very busy, causes trouble. Windows sometimes fails to register or find its hidden window, giving the “Cannot find window class” error. And when many STA threads waited on the background service without a working mailbox loop, the communication broke, and the process crashed.When I changed:
hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);, tohr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);and ran my test script that I mentioned above the issue was gone and I couldn't see any crashes.Would you please test this in the actual environment, and confirm if this works for you?
zooba commentedon Oct 15, 2026
Switching to MTA sounds reasonable. I'm not super familiar with the internals, but the CoInitializeEx docs do make it sound like STA is going to spin up a lot more infrastructure that MTA defers to the COM object implementation. Since we aren't doing threads here anyway, and the WMI samples use MTA, it should be safe enough.