Environment
- YASB v2.0.5
- Python 3.14.6 (bundled)
- Windows 11
Summary
Twice in one session I hit Windows fatal exception: code 0x8001010d (RPC_E_CANTCALLOUT_ININPUTSYNCCALL, "an outgoing call cannot be made since the application is dispatching an input-synchronous call"). This is a COM reentrancy error: a COM-touching Win32 call is being made from a thread while Windows considers it mid-dispatch of a synchronous input call, most likely colliding with the global hotkey hook (HotkeyListener) or notification listener that's also active at that point.
It hit two different call sites on two different occasions:
1. Main thread, during app-bar creation (killed the bar, required restart):
Current thread (most recent call first):
File "src\core\utils\win32\app_bar.py", line 147 in register_new
File "src\core\utils\win32\app_bar.py", line 107 in create_appbar
File "src\core\bar.py", line 173 in update_app_bar
File "src\core\bar.py", line 128 in __init__
File "src\core\bar_manager.py", line 257 in create_bar
File "src\core\bar_manager.py", line 162 in initialize_bars
File "main.py", line 144 in main_async
2. UpdateChecker background thread, during SSL context creation at boot (non-fatal to the bar, but the update check silently failed):
Thread [UpdateChecker] (most recent call first):
File "C:\...\Lib\ssl.py", line 438 in __new__
File "C:\...\Lib\ssl.py", line 698 in create_default_context
File "src\core\utils\update_service.py", line 207 in _fetch_release_data
File "src\core\utils\update_service.py", line 256 in check_for_updates
File "src\core\utils\update_service.py", line 403 in _check_for_update
Both occurred right around bar startup/restart, when several Win32/COM-touching services (HotkeyListener, WindowsNotificationEventListener, TaskbarWindowManager, appbar registration, and the background update checker) are all initializing concurrently.
Impact: Case 1 killed the bar and required a full restart. Case 2 didn't crash the process but the update check silently failed.
Ask: Is there known reentrancy protection around the COM/Win32 calls made from these background threads at startup? Serializing appbar registration and the update check away from the hotkey-hook window's message dispatch (or catching/retrying on this specific HRESULT) would likely fix it.
Environment
Summary
Twice in one session I hit
Windows fatal exception: code 0x8001010d(RPC_E_CANTCALLOUT_ININPUTSYNCCALL, "an outgoing call cannot be made since the application is dispatching an input-synchronous call"). This is a COM reentrancy error: a COM-touching Win32 call is being made from a thread while Windows considers it mid-dispatch of a synchronous input call, most likely colliding with the global hotkey hook (HotkeyListener) or notification listener that's also active at that point.It hit two different call sites on two different occasions:
1. Main thread, during app-bar creation (killed the bar, required restart):
2. UpdateChecker background thread, during SSL context creation at boot (non-fatal to the bar, but the update check silently failed):
Both occurred right around bar startup/restart, when several Win32/COM-touching services (
HotkeyListener,WindowsNotificationEventListener,TaskbarWindowManager, appbar registration, and the background update checker) are all initializing concurrently.Impact: Case 1 killed the bar and required a full restart. Case 2 didn't crash the process but the update check silently failed.
Ask: Is there known reentrancy protection around the COM/Win32 calls made from these background threads at startup? Serializing appbar registration and the update check away from the hotkey-hook window's message dispatch (or catching/retrying on this specific HRESULT) would likely fix it.