audioDeviceStopped for Stienberg ASIO endless loop

When closing the application the audioDeviceStopped call for the Stienberg ASIO device ends up in the purecall error, which when it aborts ends up in an endless loop. Using Steinberg ASIO 2.3. Any suggestions?

Would need more info, stack traces, explanation of where it’s looping, etc to be able to help


Syntorial.exe!_purecall() Line 44 C

Syntorial.exe!juce::AudioDeviceManager::audioDeviceStoppedInt() Line 783	C++
    for (int i = callbacks.size(); --i >= 0;)
    i = 0;
	_vpt[0] =	0x005b5f7d {Syntorial.exe!juce::AudioIODeviceCallback::`vector deleting destructor'(unsigned int)}	void *
Syntorial.exe!juce::AudioDeviceManager::CallbackHandler::audioDeviceStopped() Line 68	C++
Syntorial.exe!juce::ASIOAudioIODevice::stop() Line 780	C++
Syntorial.exe!juce::ASIOAudioIODevice::close() Line 723	C++
Syntorial.exe!juce::ASIOAudioIODevice::~ASIOAudioIODevice() Line 361	C++
Syntorial.exe!juce::ASIOAudioIODevice::`scalar deleting destructor'(unsigned int)	C++
Syntorial.exe!juce::ScopedPointer<juce::AudioIODevice>::operator=(juce::AudioIODevice * const newObjectToTakePossessionOf) Line 138	C++
Syntorial.exe!juce::AudioDeviceManager::~AudioDeviceManager() Line 108	C++
Syntorial.exe!TopComponent::~TopComponent() Line 356	C++
Syntorial.exe!TopComponent::`scalar deleting destructor'(unsigned int)	C++
Syntorial.exe!juce::ScopedPointer<TopComponent>::~ScopedPointer<TopComponent>() Line 97	C++
Syntorial.exe!MainWindow::~MainWindow() Line 2064	C++
Syntorial.exe!MainWindow::`scalar deleting destructor'(unsigned int)	C++
Syntorial.exe!juce::ScopedPointer<MainWindow>::operator=(MainWindow * const newObjectToTakePossessionOf) Line 138	C++
Syntorial.exe!SyntorialApplication::shutdown() Line 42	C++
Syntorial.exe!juce::JUCEApplication::shutdownApp() Line 216	C++
Syntorial.exe!juce::JUCEApplication::main() Line 246	C++
Syntorial.exe!WinMain(void * __formal, void * __formal, const char * __formal, int __formal) Line 133	C++
Syntorial.exe!__tmainCRTStartup() Line 238	C
Syntorial.exe!WinMainCRTStartup() Line 164	C
kernel32.dll!74c93677()	Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
ntdll.dll!77349f42()	Unknown
ntdll.dll!77349f15()	Unknown


I hope this helps, anything else you need please let me know.

The looping is within the purecall, which Microsoft tells you should never happen, when it calls it’s abort function.
Want to prevent the purecall


Looks to me like you’ve got a dangling pointer still registered for callbacks…