Filed as [Bug]: JUCE 9.0.0 macOS: app deadlocks at launch inside CoreAudioIODevice::getInputLatencyInSamples (HALC_ProxyObject::HasProperty never returns) on a machine with many audio devices · Issue #1686 · juce-framework/JUCE · GitHub with full sampled call graphs; posting here for visibility since the new CoreAudio implementation is JUCE 9’s headline macOS change.
Short version: since JUCE 9.0.0’s rewritten macOS CoreAudio layer, my JUCE standalone app deadlocks at launch, before its first window appears. The identical codebase on 8.0.13 launches fine on the same machine, same day, same devices. Reproduced twice, sampled both times.
The main thread blocks forever in:
juce::CoreAudioClasses::CoreAudioIODevice::getInputLatencyInSamples()
juce::AudioObject::getProperty<unsigned int>(...)
AudioObjectHasProperty (CoreAudio)
HALC_ShellObject::HasProperty
HALC_ProxyObject::HasProperty
mach_msg -> mach_msg2_trap (100% of samples, both runs)
The synchronous mach message to coreaudiod is never answered. No crash, no window, 0.1 percent CPU, forever.
**Environment:** macOS Ventura 13.7.8, Intel Mac Pro (2019). The app opens a split configuration (loopback driver in, Thunderbolt interface out) and the machine carries about 18 CoreAudio devices (Apogee Symphony I/O Thunderbolt, several virtual loopbacks, six Pro Tools Audio Bridges, NDI, BlackHole, aggregates). My suspicion is the new always-on private aggregate path meeting a large device list: a two-device dev machine likely never sees this, but a crowded pro-audio machine hits it at launch.
Also worth knowing: force-killing the client while it is blocked in that proxy call wedged coreaudiod itself; afterwards even a JUCE 8.0.13 client hung inside AudioDeviceStart until killall coreaudiod.
Ruled out: my code (zero-change compile, full DSP test suite passes against 9.0.0, pluginval strictness 10 passes on the 9.0.0-built VST3 and AU), a one-off (second repro after a clean gap), a broken machine (8.0.13 runs fine between the attempts).
Full details, both complete sample call graphs, and repro steps are in the GitHub issue. Happy to run diagnostic builds.
