I’m getting a crash in ProTools 2021 on the latest macOS Monterey build running on a M1 macbook. I have narrowed it down and it seems to be caused by the dsp::Convolution process call. It does not happen with VST3 or AU formats on the same macbook, or with AAX running on Big Sur (also on a M1 machine). So it seems specific to the convolution module in an AAX plugin on Monterey.
I’m loading the impulse as binary data.
AAX SDK 2.3.2
JUCE 6.1.2
I have reproduced the crash in a simple plugin like this:
Can you go any deeper into the call stack to see what exactly is crashing? Download the Pro Tools Developer version and attach a debugger to learn more as on an M1 you’re not going to get the usual crash details coming through (I think there’s an issue with crash reporter coming into play). I’ve observed some strange crashes in Monterey running Pro Tools on M1 when calling Accelerate’s IFFT routine, so it could be related to that. Totally different algorithm, but suspiciously similar symptoms and I suspect the juce convolution will be using an Accelerate IFFT at some stage. Also will be useful to know if it happens on an Intel machine when you are not using Intel IPP for acceleration so it leans into the Accelerate framework there too.
The main problem is that AFAIK, Pro Tools and AAX are not Silicon native yet. Furthermore, debugging AAX requires the use of external tools, since (as far as I remember) you cannot attach a debugger to PT process.
How accurate is the example code you posted? I wouldn’t be surprised if this crashes, given that you’re not initialising the ProcessSpec’s block size and channel count data members. Are you setting these data members in your actual test plugin?
Can you go any deeper into the call stack to see what exactly is crashing?
@hill-matthew This is a test machine with no development tools installed yet, but I’ll try that. On my Big Sur M1 machine I haven’t been able to attach a debugger to anything though.
The main problem is that AFAIK, Pro Tools and AAX are not Silicon native yet.
@lcapozzi Right, but ProTools and plugins runs fine via Rosetta. The test AAX plugin here works fine on another M1 mac running Big Sur, and also runs fine on Monterey if I don’t call convolution.process().
How accurate is the example code you posted? I wouldn’t be surprised if this crashes, given that you’re not initialising the ProcessSpec’s block size and channel count data members. Are you setting these data members in your actual test plugin?
@reuk Sorry about that. I am indeed setting both maximumBlockSize and numChannels. As mentioned, the same plugin doesn’t crash as VST3 and AU, and even as AAX on Big Sur with the same chip.
Has anyone tried reproducing? Wonder if I’m the only one getting this crash?
Yes I tried reproducing this using the Juce convolver, but also my own convolver, it crashes in the same place. That’s too much of a coincidence as they share no code whatsoever so are doing totally different things until they both dip into the vDSP IFFT.
M1 Big Sur: no crash
M1 Monterey: crash in vDSP_fft_zrop
Intel Big Sur: no crash
Intel Monterey: crash in vDSP_fft_zrop
Clearly there is a problem when trying to use the Accelerate vDSP IFFT routine in Pro Tools running on Monterey. No crashes in any other hosts. So, nothing to do with M1 emulation, I suspect Avid will need to look into this when they are updating for Monterey compatibility.
@reuk Will the JUCE team be reaching out to Avid regarding this issue? There’s probably a better chance of it getting attention if it’s coming from the JUCE team instead of some random me.
I was hoping to repro the issue myself before escalating but unfortunately we haven’t had access to an M1 machine running Monterey. I think the official Monterey release happened today, so hopefully we can update our M1 test machine shortly and test the issue ourselves.
I was offering a means of reproducing the fault for those without an M1 system, indeed IPP is faster than vDSP for shipping code and I don’t use it unless I have to.
Hi all - this is being investigated by Avid. Our bug tracker number for this is PT-278282, with a corresponding Apple feedback ID of FB9715681. So far we do not have any information regarding the cause of the crash, unfortunately, but it certainly relates to using FFT functions provided by the Accelerate framework.
We have identified the cause of this crash. We have not found any way to work around this crash when running the vDSP_fft_zrip function on Monterey in Pro Tools 2021.10 or earlier, but we will apply a fix in time for the first Pro Tools release that is officially qualified for macOS Monterey.
Bumping this thread, as we’re encountering this bug with current and upcoming plugin builds in the latest version of Pro Tools on Apple Silicon.
Conditions where the issue manifests:
Record arm a track with any plugin that uses vDSP based FFT processing. Record to the track, stop playback, record disarm the track. Instant crash on the vDSP thread.
Affected systems (based on our tests):
Pro Tools must be running in Rosetta mode, or must be running with an HDX system connected.
The bug does not manifest on Apple Silicon native mode, unless there is an HDX system connected. Similarly, it is also not present on Intel based Macs.
Just bumping the thread so this (hopefully) gets some visibility.