ASIO DirectX Full Duplex Driver Crashes on Windows 10 x64


Related to my previous post.
This old/default driver is installed by some applications, and it crashes for me on win 10 64
Can anyone confirm?
It crashes when trying to clear the buffers

    // clear the channels that are used with the dummy stuff
    outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[0], preferredBufferSize);
    outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[1], preferredBufferSize);

It might have something to do with my computer having io config of 2 in, 4 out. ?

ASIO Devices crashing in 64bit

Got a stack trace?


Will this do?:

App.exe!memset() Line 75	Unknown
00000243d7ef2720()	Unknown

App.exe!juce::zeromem(void * memory, unsigned __int64 numBytes) Line 34 C++
App.exe!juce::ASIOSampleFormat::clear(void * dst, const int numSamps) Line 156 C++
App.exe!juce::ASIOAudioIODevice::createDummyBuffers(long preferredSize) Line 1089 C++
App.exe!juce::ASIOAudioIODevice::openDevice() Line 1234 C++
App.exe!juce::ASIOAudioIODevice::ASIOAudioIODevice(juce::ASIOAudioIODeviceType * ownerType, const juce::String & devName, const _GUID clsID, const int slotNumber) Line 351 C++
App.exe!juce::ASIOAudioIODeviceType::createDevice(const juce::String & outputDeviceName, const juce::String & inputDeviceName) Line 1525 C++
App.exe!juce::AudioDeviceManager::setAudioDeviceSetup(const juce::AudioDeviceManager::AudioDeviceSetup & newSetup, bool treatAsChosenDevice) Line 539 C++
App.exe!AudioDeviceSettingsPanel::comboBoxChanged(juce::ComboBox * comboBoxThatHasChanged) Line 321 C++
App.exe!juce::ListenerList<juce::ComboBox::Listener,juce::Array<juce::ComboBox::Listener * __ptr64,juce::DummyCriticalSection,0> >::callChecked<juce::Component::BailOutChecker,juce::ComboBox * __ptr64>(const juce::Component::BailOutChecker & bailOutChecker, void (juce::ComboBox *) * callbackFunction, juce::ComboBox * param1) Line 182 C++

Why are we doing this on a Sunday, and in this weather ?


We are also having issues with this particular driver, our stack trace looks very much like the one posted above.
Previously we used PortAudio which works so I thought i´d compare the implementations to see what is going on and found this inside the initialization of ASIO devices inside PortAudio.

            // Since portaudio opens ALL ASIO drivers, and no one else does that,
            // we face fact that some drivers were not meant for it, drivers which act
            // like shells on top of REAL drivers, for instance.
            // so we get duplicate handles, locks and other problems.
            // so lets NOT try to load any such wrappers. 
            // The ones i [davidv] know of so far are:

            if (   strcmp (names[i],"ASIO DirectX Full Duplex Driver") == 0
                || strcmp (names[i],"ASIO Multimedia Driver")          == 0
                || strncmp(names[i],"Premiere",8)                      == 0   //"Premiere Elements Windows Sound 1.0"
                || strncmp(names[i],"Adobe",5)                         == 0   //"Adobe Default Windows Sound 1.5"

I dont know if it is applicable on the JUCE implementation but i thought i share it if anyways.

Is there any other known workaround for JUCE currently? I mean, i could do something similar and ignore these drivers inside scanForDevices in the juce_win32_ASIO but i´d rather not hack your code :slight_smile: