Crash in Cubase 9
-
Hi all,
Running into a very consistent crash with a few of my customers running Cubase 9. I managed to reproduce the issue on my rig with a symbolicated crash log and it seems to be related to switching presets and the sample loading thread. I can't reproduce it in Cubase 9.5 or higher, so it seems specific to Cubase 9. Any leads would be greatly appreciated. Here's the crash report:
Process: Cubase 9 [14712] Path: /Applications/Cubase 9.app/Contents/MacOS/Cubase 9 Identifier: com.steinberg.cubase9 Version: 9.0.0.92 (9.0.0.92) Code Type: X86-64 (Native) Parent Process: ??? [1] Responsible: Cubase 9 [14712] User ID: 502 Date/Time: 2021-05-23 21:00:22.539 -0700 OS Version: Mac OS X 10.13.6 (17G66) Report Version: 12 Anonymous UUID: 17C59BB8-3A7A-3916-1D3C-0AA0A4200CB9 Time Awake Since Boot: 20000 seconds System Integrity Protection: enabled Crashed Thread: 79 Sample Loading Thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Application Specific Information: abort() called *** error for object 0x60000021fd20: Freeing unallocated pointer Thread 79 Crashed:: Sample Loading Thread 0 libsystem_kernel.dylib 0x00007fff55a53b66 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff55c1e080 pthread_kill + 333 2 libsystem_c.dylib 0x00007fff559af1ae abort + 127 3 libsystem_malloc.dylib 0x00007fff55abedc1 nanozone_error + 502 4 libsystem_malloc.dylib 0x00007fff55ab35b0 nano_realloc + 869 5 libsystem_malloc.dylib 0x00007fff55aae92d malloc_zone_realloc + 111 6 libsystem_malloc.dylib 0x00007fff55aae820 realloc + 253 7 com.steinberg.cubase9 0x000000010eaa80f1 0x10d22b000 + 25678065 8 com.steinberg.cubase9 0x000000010eaa8d3d 0x10d22b000 + 25681213 9 com.steinberg.cubase9 0x000000010eb3b180 0x10d22b000 + 26280320 10 com.steinberg.cubase9 0x000000010eb3b147 0x10d22b000 + 26280263 11 com.steinberg.cubase9 0x000000010eb3b147 0x10d22b000 + 26280263 12 com.steinberg.cubase9 0x000000010eb3b147 0x10d22b000 + 26280263 13 com.steinberg.cubase9 0x000000010d90b54c 0x10d22b000 + 7210316 14 com.steinberg.cubase9 0x000000010e67c2dc 0x10d22b000 + 21304028 15 com.steinberg.cubase9 0x000000010e67c155 0x10d22b000 + 21303637 16 com.steinberg.cubase9 0x000000010e67c779 0x10d22b000 + 21305209 17 com.steinberg.cubase9 0x000000010ecd6d27 0x10d22b000 + 27966759 18 com.steinberg.cubase9 0x000000010e5a604f 0x10d22b000 + 20426831 19 com.steinberg.cubase9 0x000000010e5a6070 0x10d22b000 + 20426864 20 com.steinberg.VSTPlugManager 0x000000011ca8f44c 0x11ca40000 + 324684 21 com.lunacyaudio.cube 0x000000015364f0ed juce::AudioProcessorParameter::sendValueChangedMessageToListeners(float) + 189 22 com.lunacyaudio.cube 0x0000000153284d60 hise::ScriptedControlAudioParameter::setParameterNotifyingHostInternal(int, float) + 432 (juce_AudioProcessor.cpp:1443) 23 com.lunacyaudio.cube 0x0000000153133fd6 hise::ProcessorWithScriptingContent::controlCallback(hise::ScriptingApi::Content::ScriptComponent*, juce::var) + 1830 (ScriptComponentWrappers.cpp:2513) 24 com.lunacyaudio.cube 0x000000015321bec5 hise::ProcessorWithScriptingContent::setControlValue(int, float) + 645 (juce_Variant.cpp:502) 25 com.lunacyaudio.cube 0x000000015313fec3 hise::ScriptingApi::Content::restoreAllControlsFromPreset(juce::ValueTree const&) + 1827 (juce_ReferenceCountedObject.h:390) 26 com.lunacyaudio.cube 0x0000000152d66e80 std::__1::__function::__func<hise::MainController::UserPresetHandler::loadUserPreset(juce::ValueTree const&, bool)::$_15, std::__1::allocator<hise::MainController::UserPresetHandler::loadUserPreset(juce::ValueTree const&, bool)::$_15>, hise::SafeFunctionCall::Status (hise::Processor*)>::operator()(hise::Processor*&&) + 976 (juce_Array.h:224) 27 com.lunacyaudio.cube 0x0000000152cfd8bc hise::MainController::SampleManager::PreloadJob::runJob() + 924 (functional:1913) 28 com.lunacyaudio.cube 0x000000015345cc06 hise::SampleThreadPool::run() + 390 (atomic:921) 29 com.lunacyaudio.cube 0x000000015366fc3c threadEntryProc + 300 (juce_ReferenceCountedObject.h:390) 30 libsystem_pthread.dylib 0x00007fff55c1b661 _pthread_body + 340 31 libsystem_pthread.dylib 0x00007fff55c1b50d _pthread_start + 377 32 libsystem_pthread.dylib 0x00007fff55c1abf9 thread_start + 13
@Christoph-Hart Any ideas for things to try?
Thank you!
-
Does it happen with other HISE based plugins too?
-
@d-healey I've had reports of crashes during switching presets on my plugin, various DAWs.
-
@DanH That's a different issue, this only happens in Cubase 9
-
@d-healey Do you happen to have any sample projects I could test?
-
@Casey-Kolb Happy to send mine if it helps.... Or there's the super organ collab?
-
@Casey-Kolb I'll pm you.
@DanH The organ doesn't use samples
-
Alright, so I've finally narrowed this issue down to this commit in HISE. If I revert this commit and rebuild the VST, it doesn't crash in Cubase 9.
@Christoph-Hart This was the commit you added for CUBE to fix the orb drag automation bug, so that calling
.changed()
writes automation to the DAW. Any ideas as to why this might be breaking Cubase 9, but not Cubase 9.5 and above? -
Nice catch! No idea why it breaks that particular cubase version. Have you attached a debugger to cubase with a debug build yet?
-
@Christoph-Hart I have not, but that's a good call! I need to figure out how to do that first
-
@Christoph-Hart Here's an update! This is where it gets caught in Cubase 9 with that commit.
-
@Casey-Kolb Any news about this Cubase 9 problem?
-
@marcLab We're still investigating it, but should have a fix within the next week or two! Unfortunately it's a pretty deep one.
-
@Casey-Kolb One of my friends is having a strange problem with Cubase 10.5. Some presets are making the app crash. That's the message he's getting.
Tried it on my PC with the same Cubase version and I can't recreate the bug. Everything is working perfectly on my side... not a single crash. Do you think this could be related to the problem you are having on your side?
-
@marcLab Hmm, it's hard to say without seeing a crash report or debugging on that machine. My guess would be that it's unrelated because we're only having issues on Cubase 9 on Mac, but everything works perfectly in Cubase 9.5 and above. It's related to updating the automation states of various knobs when preset switching.