AuburnSounds / AuburnSounds/Dplug

Soundminer + Inner Pitch 2.0.1 + Audio Unit => deadlock

Open
#941 3 comments 0 reactions 0 assignees View on GitHub
Bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.