Skip to content

[Bug]: VST3 scanner crashes with SIGSEGV on Spectrasonics plugins (Keyscape, Trilian) #1599

@irvall

Description

@irvall

Detailed steps on how to reproduce the bug

  1. Install Spectrasonics Keyscape 1.5.2c (or Trilian)
  • Available at: /Library/Audio/Plug-Ins/VST3/Keyscape.vst3 (macOS)
  1. Build JUCE AudioPluginHost or any JUCE-based VST3 scanner
  • Using JUCE 8.0.10
  • macOS arm64 (but likely affects all platforms)
  1. Attempt to scan the Keyscape plugin
  • Either through AudioPluginHost's plugin menu or programmatically via VST3PluginFormat::createPluginInstance()
  1. Observe crash with SIGSEGV

What is the expected behaviour?

Plugin should load successfully (with or without parameters), similar to how Logic Pro, Ableton Live, and other DAWs handle it. Debug dump from successful Omnisphere scanning:

Debug mode - plugin data: {
  "Name": "Omnisphere",
  "Vendor": "Spectrasonics",
  "Version": "3.0.0",
  "Category": "Instrument|Synth",
  "Type": "Instrument",
  "Format": "VST3",
  "Identifier": "/Library/Audio/Plug-Ins/VST3/Omnisphere.vst3",
  "Parameters": [
    {
      "Name": "Param 0",
      "Index": 0,
      "UniqueId": "0",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 1",
      "Index": 1,
      "UniqueId": "1",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 2",
      "Index": 2,
      "UniqueId": "2",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 3",
      "Index": 3,
      "UniqueId": "3",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 4",
      "Index": 4,
      "UniqueId": "4",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 5",
      "Index": 5,
      "UniqueId": "5",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
    {
      "Name": "Param 6",
      "Index": 6,
      "UniqueId": "6",
      "Steps": 2147483647,
      "Discrete": false,
      "MetaParamter": false,
      "Automatable": true,
      "Orientation": "Normal",
      "Unit": "",
      "DefaultValue": 0.0,
      "ValueStrings": [],
      "Bypass": false,
      "Category": 0,
      "Boolean": false
    },
...

Operating systems

macOS

What versions of the operating systems?

15.7.2 (24G325)

Architectures

Arm64/aarch64

Stacktrace

* thread #1, name = 'JUCE v8.0.10: Message Thread', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x180)
    frame #0: 0x000000010c209eb4 Keyscape`___lldb_unnamed_symbol5130 + 12
  * frame #1: 0x0000000102a17c48 PluginScanner`juce::getAllParamIDs(controller=0x0000000109ee5770) at juce_VST3PluginFormat.cpp:105:29
    frame #2: 0x0000000102a17538 PluginScanner`juce::VST3PluginInstance::initialiseParameterList(this=0x000000010b02d000) at juce_VST3PluginFormat.cpp:3568:27
    frame #3: 0x0000000102a16950 PluginScanner`juce::VST3PluginInstance::initialise()::'lambda'()::operator()(this=0x000000016d6898d8) const at juce_VST3PluginFormat.cpp:2675:13
    frame #4: 0x00000001029f1d18 PluginScanner`juce::VST3PluginInstance::initialise(this=0x000000010b02d000) at juce_VST3PluginFormat.cpp:2680:9
    frame #5: 0x000000010296bfb8 PluginScanner`juce::createVST3Instance(format=0x0000600003fab380, description=0x0000600001bb0180, file=0x000000016d689a10) at juce_VST3PluginFormat.cpp:4203:21
    frame #6: 0x000000010296bc0c PluginScanner`juce::VST3PluginFormat::createPluginInstance(this=0x0000600003fab380, description=0x0000600001bb0180, (null)=44100, (null)=512, callback=juce::AudioPluginFormat::PluginCreationCallback @ 0x000000016d689bc8) at juce_VST3PluginFormat.cpp:4228:27
    frame #7: 0x0000000102922b4c PluginScanner`juce::AudioPluginFormat::createInstanceFromDescription(this=0x0000600003fab380, desc=0x0000600001bb0180, initialSampleRate=44100, initialBufferSize=512, errorMessage=0x000000016d68a318) at juce_AudioPluginFormat.cpp:74:9
    frame #8: 0x000000010277a910 PluginScanner`PluginScannerApplication::parseDescription(this=0x000000012f031e00, desc=0x0000600001bb0180) at Main.cpp:473:44
    frame #9: 0x0000000102778fb8 PluginScanner`PluginScannerApplication::loadPlugin(this=0x000000012f031e00, pluginPathOrIdentifier=String @ 0x000000016d68a748, client=0x000000016d68a8d8) at Main.cpp:341:39
    frame #10: 0x0000000102776274 PluginScanner`PluginScannerApplication::initialise(this=0x000000012f031e00, commandLine=0x000000016d68a9b0) at Main.cpp:188:4
    frame #11: 0x0000000102be6f34 PluginScanner`juce::JUCEApplicationBase::initialiseApp(this=0x000000012f031e00) at juce_ApplicationBase.cpp:312:5
    frame #12: 0x0000000102ffb9a8 PluginScanner`juce::JUCEApplication::initialiseApp(this=0x000000012f031e00) at juce_Application.cpp:97:30
    frame #13: 0x0000000102be6cb8 PluginScanner`juce::JUCEApplicationBase::main() at juce_ApplicationBase.cpp:271:16
    frame #14: 0x0000000102be6b3c PluginScanner`juce::JUCEApplicationBase::main(argc=5, argv=0x000000016d68b128) at juce_ApplicationBase.cpp:255:16
    frame #15: 0x00000001027757a0 PluginScanner`main(argc=5, argv=0x000000016d68b128) at Main.cpp:820:1
    frame #16: 0x00000001834f2b98 dyld`start + 6076

Plug-in formats (if applicable)

VST3

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

The bug is present on the develop branch

Code of Conduct

  • I agree to follow the Code of Conduct

Misc.

Looks related: spotify/pedalboard#346

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions