BTT event taps intermittently stall the entire input stream when lsd is slow (blocking XPC call to LaunchServices on the tap-servicing thread)

Describe the bug
Summary

Every few days, trackpad scrolling and input in general become janky system-wide: input goes dead for a moment, then catches up in a steppy burst. The machine is otherwise idle — no CPU, memory, or GPU pressure. Quitting BTT immediately restores smooth input; relaunching brings the problem back within days. Restarting the system (or just BTT) clears it temporarily. This has been the consistent pattern.

Diagnosis

I believe I found the mechanism.

Using CGGetEventTapList, BTT's active (filtering) event taps show extreme latencies while the jank is happening. The HID-level tap that includes scroll events repeatedly spiked from microseconds to multi-second values:

  • avg/max readings from ~0.6 s up to ~87 s
  • up to ~182 s max shortly after a fresh relaunch

BTT held the only enabled active taps on the system at the time, so nothing else could have been stalling the event stream.

A 5-second sample of the BetterTouchTool process taken during the jank shows the main thread — which also services the event-tap callbacks — blocked inside a synchronous XPC call to LaunchServices:

_dispatch_call_block_and_release
-[NSRunningApplication localizedName]
-[NSRunningApplication _fetchDynamicProperties]
_LSCopyApplicationInformation
LSClientToServerConnection::sendWithReply
xpc_connection_send_message_with_reply_sync
mach_msg2_trap   (blocked)

When lsd is slow to reply, the tap callback can't return the event, and macOS holds the entire input stream behind it.

Suggested fix

Move the NSRunningApplication / LaunchServices lookups off the tap-servicing thread (or cache them), so a slow lsd reply can't block event delivery.

On testing the latest alpha

Diagnosed on 6.640 stable. I checked the 6.641–6.652 alpha release notes and saw no changes related to event taps or input handling. Since the stall is intermittent (takes days to reappear), I can't quickly confirm or rule it out on the alpha. Happy to test an alpha build if you think it's relevant.


Affected input device (e.g. MacBook Trackpad, Magic Mouse/Trackpad, Touch Bar, etc.):

Built-in MacBook trackpad (no external mice; symptom affects all input system-wide while it lasts).


Device information:

  • Type of Mac: MacBook Pro (M5 Pro)
  • macOS version: 26.5.2 (25F84)
  • BetterTouchTool version: 6.640 (2026071312)

Additional information (e.g. crash logs, related issues, etc.):

No crashes — nothing lands in Crash Reports because nothing crashes; the tap just stalls. Full sample output available on request. Also happy to run CGGetEventTapList monitoring again while the jank is live if more latency data would help.

for some reason lsd (launch services daemon) seems to be very slow for some users on current macOS 26 versions, this can cause exactly the issue (and correct diagnosis) you described. I have added some improvements to 6.653 (uploading), however the underlying issue is caused by something weird happening in macOS and most likely also affects other things (even though probably not with such high impact)