Skip to content

Windows fatal exception 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL) during startup, intermittent and sometimes fatal to the bar #1049

Description

@Ferocious5885

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs investigationInvestigation into the bug/feature/question raised is needed before able to respond

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions