WebKit ProcessThrottler Crash in JUCE 8 WebView Plugin (macOS)

Environment:

  • macOS 26.2 (Tahoe / 25C56)

  • Apple Silicon (M1 Pro)

  • JUCE 8.0.12

  • Ableton Live 12.3.2

  • Plugin using juce::WebBrowserComponent for UI

Crash Summary: Intermittent crash in WebKit’s process throttler when using WebBrowserComponent in an audio plugin. The crash occurs on the main thread with EXC_BREAKPOINT (SIGTRAP).

Stack Trace (relevant frames):

WebKit::ProcessThrottler::sendPrepareToSuspendIPC(WebKit::IsSuspensionImminent)
WebKit::ProcessThrottlerActivity::invalidate(WebKit::ProcessThrottlerActivity::ForceEnableActivityLogging)
WebKit::ProcessThrottlerActivity::~ProcessThrottlerActivity()
WTF::RefCounted<WebKit::ProcessThrottlerActivity>::deref() const
WebKit::AuxiliaryProcessProxy::sendMessage(...)::$_1
IPC::Connection::dispatchMessage(WTF::UniqueRef<IPC::Decoder>)
IPC::Connection::dispatchIncomingMessages()
WTF::RunLoop::performWork()
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__

Behavior:

  • Crash is intermittent - plugin works fine most of the time

  • Seems to occur during UI interaction or when Ableton may be doing background operations

  • Audio processing is unaffected (crash is purely in WebKit’s UI process management)

  • The crash appears to be WebKit hitting an internal assertion when managing the web content process lifecycle

Analysis: The ProcessThrottler is WebKit’s mechanism for suspending/resuming the web content process to save resources. In a plugin context, this seems to malfunction because:

  1. Plugin hosts have different lifecycle patterns than normal applications

  2. The WebView may receive suspend/resume signals at unexpected times

  3. There may be a race condition between WebKit’s IPC system and the host’s threading model

Workaround Attempts:

  • Not yet found a reliable workaround from the plugin side

  • The crash is in Apple’s WebKit framework code, not in JUCE or plugin code

Questions:

  1. Has anyone else experienced ProcessThrottler crashes with WebBrowserComponent in plugins?

  2. Are there any WebBrowserComponent configuration options that might help (e.g., preventing process throttling)?

  3. Is there a way to disable WebKit’s process suspension behavior for embedded views?