Assert in checkSizeConstraint when closing plugin in Studio One

Having trouble understanding this one: when the plugin is closed in Studio One “checkSizeConstraint” in juce_VST_wrapper will throw an assert because the component is null. I haven’t seen this behavior in any other DAW, and it’s annoying because studio one will then display an error stating “The audio engine has been stopped, because the system became unresponsive due to an overload in the audio engine”.

At a loss on how to debug this as it’s JUCE specific code as far as I can tell?

Any help appreciated!

2 Likes

I was noticing that same thing today, when debugging a plugin I’m working on. I was just about to ask this same question!

Still getting this assertion. I don’t get an “audio engine has stopped” message (at least not when running outside the debugger), but I do get that assertion reported in Terminal when running Studio One from the command line. Anyone know what’s up with that?

I get the exact same issue my friend.
component == nullptr, and the same “audio engine” message. Would love to hear if you found a solution!

Please can you provide more details about your platform? I just tested with Studio One 5 on both Windows and macOS, with the VST2 version of the AudioPluginDemo project built from develop. I don’t see assertions when closing the plugin editor or destroying the plugin instance.

To debug this futher, it would be useful to know:

  • Your Studio One version (if this doesn’t occur with the latest version it’s probably a bug in old versions of Studio One)
  • Your JUCE version (if this doesn’t occur with the latest JUCE, then we probably already fixed this bug)
  • Whether you can reproduce the issue in any of the JUCE example projects, and if so, which ones
  • Your OS

Hi Reuk, thanks for the swift response!

Here’s my system info:
JUCE v6.0.5
MacOS 10.15.7
Studio One 5.3.0 (latest)

No need for you to investigate further at this point, I could very well be missing something. I’ll reply back here if I get stuck. Thanks again!

I am using Studio One 5.3.0, JUCE version 6.0.7 (modified for ARA), under Mac OS 10.15. I haven’t tried debugging any JUCE examples to see if I hit this assert. The call stack only has the checkSizeConstraint call from something like __llbd_unnamed_symbol (followed by some garbage in that name). The rectToCheck shows the rectangle size of my plugin’s editor, so I assume it’s when the editor itself closes. (I don’t have to remove the plugin or quit S1, just closing the plugin window hits this assertion.)

I still get this every time when closing Studio One. Using JUCE 6.1.4 now, and no change in this behavior.

The rectToCheck is the plugin editor’s rectangle, but component is NULL. That’s a std::unique_ptr, so I assume it was deleted elsewhere already?

I think this is only possible if StudioOne is calling the IPlugView::checkSizeConstraint after calling IPlugView::removed. The docs for removed say:

You have to remove all your own views from the parent window or view.

I’m not sure that it makes sense for the host to call checkSizeConstraint in this case, because the host should expect that the editor isn’t displaying anything useful at this point.

Therefore, I don’t think this is a JUCE bug - the assertion is useful to point out that something a bit unexpected has happened.

3 Likes

I’m happy to update we’ve updated PreSonus/Fender about this and it is fixed with the Studio One 6.1 release.

3 Likes

I can confirm this is fixed with version 6.1. Woo hoo!