AuburnSounds / AuburnSounds/Dplug
Soundminer + Inner Pitch 2.0.1 + Audio Unit => deadlock
- Dominant language
- D
- Stars
- 564
- Forks
- 34
- PR merge metrics
- No merged PRs in 30d
Description
> Hi there, i'm the developer of Soundminer, i have a user using an older version of Inner Pitch 2 (2.0.1 AU) that is getting lockups.
>Basically when the user changes records, I stop audio processing and for AU, call AudioUnitReset
>for (int i = 0; i < getBusCount (true); ++i) AudioUnitReset (audioUnit, kAudioUnitScope_Input, static_cast (i));
for (int i = 0; i < getBusCount (false); ++i) AudioUnitReset (audioUnit, kAudioUnitScope_Output, static_cast (i));
>Seems dplug posts this async for the render thread to handle, but of course its not running, so it locks up. I've tried the free version (2.1) and it >seems to be working, so i've advised the customer to update. Is this something you are aware of?
>My JUCE Au has quite a few changes, but the call stack is basicallly
>SMAppController::updateSoundSelection() (in Soundminer) (SMAppController.cpp:22787)
>SMAppController::selectRecID(int, bool) (in Soundminer) (SMAppController.cpp:13523)
>SMAppController::loadPlayer(playerAttributes) (in Soundminer) (SMAppController.cpp:13689)
>SMAppController::updatePlayer() (in Soundminer) (SMAppController.cpp:14359)
>SMAudioPlayer::openFile(juce::String const&, SMURLRequest const*) (in Soundminer) (SMAudioPlayer.cpp:2443)
>SMAudioPlayer::closeFiles() (in Soundminer) (SMAudioPlayer.cpp:3244)
>SMVSTSource::resetAllPlugins() (in Soundminer) (VSTSource.cpp:1350)
>SMVSTEffect::resetState() (in Soundminer) (SMVSTEffect.cpp:711)
>juce::AudioUnitPluginInstance::resetBuses() (in Soundminer) (juce_AudioUnitPluginFormat.mm:1301)
>_D5dplug4core11lockedqueue__T11LockedQueueTSQBq2au6client18AudioThreadMessageZQBx8pushBackMFNbNiQCbZv (in Auburn Sounds Inner Pitch 2) + 24 [0x442cb005c]
+ 2212 semaphore_wait_trap (in libsystem_kernel.dylib) + 8 [0x18e121bb0]
2212 Thread_20135040
>I'm attaching the sample that was taken, also shows Thread_20971444-20971446 waiting.
[Sample of Soundminer 2.txt](https://github.com/user-attachments/files/29049928/Sample.of.Soundminer.2.txt)
Contributor guide
Research direction
Start with the attached sample and the call stack entry at juce_AudioUnitPluginFormat.mm:1301, then trace the AudioUnitReset path into dplug's LockedQueue pushBack. Reproduce the Soundminer record-change case with Inner Pitch 2.0.1 AU while audio processing is stopped. Done means the deadlock is reproduced or ruled out and the behavior is addressed or clearly documented.
Written by the indexing model from the issue text.
Assessment
- Domain
- audio-video-rtc
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100