SDL_Init with SDL_INIT_AUDIO throws exception in macOS with lldb

This normally works (SDL3), but when it is run under lldb (built with same CFLAGS), then __cxa_throw happens. Call stack below:

__cxa_throw (@__cxa_throw:3)
LoadPresetFile(char const*) (@LoadPresetFile(char const*):168)
invocation function for block in SpatializationManager::GetAUSpatialMixerPreset() (@invocation function for block in SpatializationManager::GetAUSpatialMixerPreset():367)
_dispatch_client_callout (@_dispatch_client_callout:8)
_dispatch_once_callout (@_dispatch_once_callout:11)
SpatializationManager::GetPreferencesV1(AQMESession const&, AQMEIO_Binding const&, SpatialContentTypeID, SpatialAudioPreferences&, bool, bool) (@SpatializationManager::GetPreferencesV1(AQMESession const&, AQMEIO_Binding const&, SpatialContentTypeID, SpatialAudioPreferences&, bool, bool):1561)
MEMixerChannel::Initialize() (@MEMixerChannel::Initialize():395)
MESubmixGraph::connectInputChannel(bool, MEMixerChannel*, bool) (@MESubmixGraph::connectInputChannel(bool, MEMixerChannel*, bool):110)
AQMixEngine_Base::AddRunningClient(AQIONodeClient&, bool, bool) (@AQMixEngine_Base::AddRunningClient(AQIONodeClient&, bool, bool):322)
AudioQueueObject::StartRunning(AQIONode*) (@AudioQueueObject::StartRunning(AQIONode*):64)
AudioQueueObject::Start(XAudioTimeStamp const&, unsigned int) (@AudioQueueObject::Start(XAudioTimeStamp const&, unsigned int):310)
AudioQueueXPC_Server::Start(unsigned int, XAudioTimeStampBase, unsigned int) (@AudioQueueXPC_Server::Start(unsigned int, XAudioTimeStampBase, unsigned int):66)
invocation function for block in AudioQueueXPC_Bridge::Start(unsigned int, XAudioTimeStampBase, unsigned int) (@invocation function for block in AudioQueueXPC_Bridge::Start(unsigned int, XAudioTimeStampBase, unsigned int):24)
_dispatch_client_callout (@_dispatch_client_callout:8)
_dispatch_sync_invoke_and_complete_recurse (@_dispatch_sync_invoke_and_complete_recurse:19)
AudioQueueXPC_Bridge::Start(unsigned int, XAudioTimeStampBase, unsigned int) (@AudioQueueXPC_Bridge::Start(unsigned int, XAudioTimeStampBase, unsigned int):50)
AQ::API::V2Impl::AudioQueueStartWithFlags(OpaqueAudioQueue*, AudioTimeStamp const*, unsigned int) (@AQ::API::V2Impl::AudioQueueStartWithFlags(OpaqueAudioQueue*, AudioTimeStamp const*, unsigned int):208)
AudioQueueThreadEntry (@AudioQueueThreadEntry:270)
SDL_RunThread (@SDL_RunThread:15)
RunThread (@RunThread:6)

Please give details of the crash.

SDL 3.2.0, macOS 15.3.1. Anything else ?

SDL_Init with SDL_INIT_AUDIO does not return failure. I see the exception in the debugger in this thread named SDLAudioP23. I can continue and audio seems to be working (I have a very simple audio use like a beep, not sure if something else is broken), but is the exception normal ?

I’d like to see what lldb is telling you about the crash. Please show the lldb output and the output from frame variable.

EDIT: This stackoverflow article might be related. In that article CoreAudio is throwing a C++ exception and if that’s what’s happening to you then you can proabably safely ignore it.

This is with breakpoint set -E c++.

AudioHardware-mac-imp.cpp:1224   AudioObjectRemovePropertyListener: no object with given ID 111
Process 22762 stopped
* thread #7, queue = 'HALC_ProxyNotification Call Listener Queue', stop reason = breakpoint 1.1
    frame #0: 0x0000000188850c28 libc++abi.dylib`__cxa_throw
libc++abi.dylib`__cxa_throw:
->  0x188850c28 <+0>:  pacibsp
    0x188850c2c <+4>:  stp    x22, x21, [sp, #-0x30]!
    0x188850c30 <+8>:  stp    x20, x19, [sp, #0x10]
    0x188850c34 <+12>: stp    x29, x30, [sp, #0x20]

frame variable does not output anything.

OK, so I guess it recovers somehow. I will ignore it.