vst2xscanner crashes while scanning plugin

vst2xscanner crashes while scanning our plugin.

Our plugin’s deployment target is macOS 10.10, and this crash happens whether or not we have “Implicitly Link Objective-C runtime Library” on or off. Our plugin is about 85% Objective-C and 15% C++, if that helps figure out what’s going on.

When scanning the plugin with vst2xscanner from the command line, the output is simply

Segmentation fault: 11

When running vst2xscanner from Xcode’s debugger, the stack trace at the crash is:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x1090b2b50)
  * frame #0: 0x00007fff31b2c661 CoreFoundation`CFEqual + 49
    frame #1: 0x00007fff31b1c462 CoreFoundation`CFBasicHashFindBucket + 1138
    frame #2: 0x00007fff31b1bfa3 CoreFoundation`CFDictionaryGetValue + 131
    frame #3: 0x00007fff31b53db5 CoreFoundation`-[_CFXNotificationRegistrar acquireWildcardObject:] + 101
    frame #4: 0x00007fff31b53d15 CoreFoundation`-[_CFXNotificationRegistrar add:object:observer:tokenRegistration:] + 469
    frame #5: 0x00007fff31c59236 CoreFoundation`__CFXNotificationRegisterObserver + 1526
    frame #6: 0x00007fff31b537be CoreFoundation`_CFXNotificationRegisterObserver + 14
    frame #7: 0x00007fff33c2a032 Foundation`-[NSNotificationCenter addObserver:selector:name:object:] + 477
    frame #8: 0x00007fff4003f23b WebKitLegacy`+[WebView initialize] + 187
    frame #9: 0x00007fff5858f2de libobjc.A.dylib`CALLING_SOME_+initialize_METHOD + 19
    frame #10: 0x00007fff585803c9 libobjc.A.dylib`_class_initialize + 288
    frame #11: 0x00007fff5857fe8f libobjc.A.dylib`lookUpImpOrForward + 228
    frame #12: 0x00007fff5857f914 libobjc.A.dylib`_objc_msgSend_uncached + 68
    frame #13: 0x000000010000560d vst2xscanner`___lldb_unnamed_symbol80$$vst2xscanner + 29
    frame #14: 0x00000001000024e5 vst2xscanner`___lldb_unnamed_symbol6$$vst2xscanner + 933
    frame #15: 0x00007fff5917b145 libdyld.dylib`start + 1
    frame #16: 0x00007fff5917b145 libdyld.dylib`start + 1
  thread #2
    frame #0: 0x00007fff592cb6da libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x000000010051e062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x000000010051dc45 libsystem_pthread.dylib`start_wqthread + 13
  thread #3
    frame #0: 0x00007fff592cb6da libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x000000010051e267 libsystem_pthread.dylib`_pthread_wqthread + 1552
    frame #2: 0x000000010051dc45 libsystem_pthread.dylib`start_wqthread + 13
  thread #4
    frame #0: 0x00007fff592cb6da libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x000000010051e062 libsystem_pthread.dylib`_pthread_wqthread + 1035
    frame #2: 0x000000010051dc45 libsystem_pthread.dylib`start_wqthread + 13
  thread #5
    frame #0: 0x00007fff592cae7e libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x000000010051f6a2 libsystem_pthread.dylib`_pthread_cond_wait + 732
    frame #2: 0x00007fff571b7d43 libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >) + 93
    frame #3: 0x00007fff3564fea5 JavaScriptCore`std::__1::cv_status std::__1::condition_variable::wait_until<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&) + 117
    frame #4: 0x00007fff3564fd90 JavaScriptCore`std::__1::cv_status std::__1::condition_variable_any::wait_until<std::__1::unique_lock<bmalloc::Mutex>, std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > >(std::__1::unique_lock<bmalloc::Mutex>&, std::__1::chrono::time_point<std::__1::chrono::steady_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > > const&) + 96
    frame #5: 0x00007fff3564fc29 JavaScriptCore`bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() + 233
    frame #6: 0x00007fff3564fef8 JavaScriptCore`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*), bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*> >(void*) + 40
    frame #7: 0x000000010051e6b9 libsystem_pthread.dylib`_pthread_body + 340
    frame #8: 0x000000010051e565 libsystem_pthread.dylib`_pthread_start + 377
    frame #9: 0x000000010051dc55 libsystem_pthread.dylib`thread_start + 13

If anyone has any ideas of things we could try, it would be very much appreciated. Thanks.