Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OwlPlug crashed while validating Arturia Stage 73- plugin #105

Open
DavidJameson opened this issue Aug 21, 2021 · 16 comments
Open

OwlPlug crashed while validating Arturia Stage 73- plugin #105

DavidJameson opened this issue Aug 21, 2021 · 16 comments

Comments

@DavidJameson
Copy link

Process: OwlPlug [89688]
Path: /Applications/OwlPlug.app/Contents/MacOS/OwlPlug
Identifier: owlplug
Version: 0.17.0 (100)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: OwlPlug [89688]
User ID: 501

Date/Time: 2021-08-21 17:03:23.232 -0400
OS Version: macOS 11.5.1 (20G80)
Report Version: 12
Bridge OS Version: 5.5 (18P4759a)
Anonymous UUID: 04F4458F-DB6A-A71F-1010-0139842E5925

Time Awake Since Boot: 2100000 seconds

Thought I'd give this tool a shot (it's a great idea, long overdue) but unfortunately it crashed rather quickly. See the appropriate section of the stack trace below for Mac OS.
While I understand that this looks like an Arturia crash, the fact is that that plugin validates just fine in other hosts, including our own (Gig Performer) which is also JUCE based.
Just to be sure, I just revalidated them with our system (see attached screenshot) with no issues.

screenshot_5192

System Integrity Protection: disabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

VM Regions Near 0:
-->
__TEXT 106fb5000-106fb6000 [ 4K] r-x/rwx SM=COW /Applications/OwlPlug.app/Contents/MacOS/OwlPlug

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff2033292e __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff203615bd pthread_kill + 263
2 libsystem_c.dylib 0x00007fff202b6406 abort + 125
3 libjvm.dylib 0x0000000107685cc2 os::abort(bool, void*, void const*) + 22
4 libjvm.dylib 0x0000000107834e2c VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long) + 2780
5 libjvm.dylib 0x000000010783432b VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*, char const*, ...) + 155
6 libjvm.dylib 0x0000000107834eb3 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*) + 33
7 libjvm.dylib 0x00000001076895b5 JVM_handle_bsd_signal + 792
8 libjvm.dylib 0x00000001076871ac signalHandler(int, __siginfo*, void*) + 45
9 libsystem_platform.dylib 0x00007fff203a6d7d _sigtramp + 29
10 ??? 0x0000000113a461dc 0 + 4624507356
11 com.Arturia.Stage-73-V2.vst 0x000000016881a261 0x1675ae000 + 19317345
12 com.Arturia.Stage-73-V2.vst 0x0000000168628067 0x1675ae000 + 17277031
13 com.Arturia.Stage-73-V2.vst 0x00000001686287c7 0x1675ae000 + 17278919
14 com.apple.CoreFoundation 0x00007fff2045a94c CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
15 com.apple.CoreFoundation 0x00007fff2045a8b4 __CFRunLoopDoSource0 + 180
16 com.apple.CoreFoundation 0x00007fff2045a634 __CFRunLoopDoSources0 + 242
17 com.apple.CoreFoundation 0x00007fff2045905c __CFRunLoopRun + 893
18 com.apple.CoreFoundation 0x00007fff2045861c CFRunLoopRunSpecific + 563
19 com.apple.HIToolbox 0x00007fff2869da83 RunCurrentEventLoopInMode + 292
20 com.apple.HIToolbox 0x00007fff2869d7e5 ReceiveNextEventCommon + 587
21 com.apple.HIToolbox 0x00007fff2869d583 _BlockUntilNextEventMatchingListInModeWithFilter + 70
22 com.apple.AppKit 0x00007fff22c5f502 _DPSNextEvent + 864
23 com.apple.AppKit 0x00007fff22c5dcd5 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
24 com.apple.AppKit 0x00007fff22c50049 -[NSApplication run] + 586
25 libglass.dylib 0x000000010b93623c -[GlassApplication runLoop:] + 1932
26 com.apple.Foundation 0x00007fff21208b81 __NSThreadPerformPerform + 204
27 com.apple.CoreFoundation 0x00007fff2045a94c CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
28 com.apple.CoreFoundation 0x00007fff2045a8b4 __CFRunLoopDoSource0 + 180
29 com.apple.CoreFoundation 0x00007fff2045a634 __CFRunLoopDoSources0 + 242
30 com.apple.CoreFoundation 0x00007fff2045905c __CFRunLoopRun + 893
31 com.apple.CoreFoundation 0x00007fff2045861c CFRunLoopRunSpecific + 563
32 libjli.dylib 0x0000000107080615 CreateExecutionEnvironment + 398
33 libjli.dylib 0x000000010707c847 JLI_Launch + 1359
34 libapplauncher.dylib 0x000000010700c6e0 JavaLibrary::JavaVMCreate(unsigned long, char**) + 168
35 libapplauncher.dylib 0x000000010700bab9 JavaVirtualMachine::launchVM(JavaOptions&, std::__1::list<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > >&) + 437
36 libapplauncher.dylib 0x000000010700a5b8 JavaVirtualMachine::StartJVM() + 1916
37 libapplauncher.dylib 0x0000000107009daf RunVM() + 31
38 libapplauncher.dylib 0x000000010701b41f start_launcher + 1247
39 owlplug 0x0000000106fb5cce main + 238
40 libdyld.dylib 0x00007fff2037cf3d start + 1

@DropSnorz
Copy link
Owner

Hi @DavidJameson ! Thank you for reporting this issue.

First of all, to avoid frustrating crashes while we find the root cause, you can disable the native discovery for this specific plugin. You can disable native discovery for a plugin by searching it on OwlPlug Plugins tab. If you have a doubt about which plugin causing the issue you can restart a sync. After a crash during sync, a crash-report screen should be displayed if you restart OwlPlug. You can disable Native discovery for the last analyzed plugin at this time.

  • You have several plugin formats (VST, VST3, AU) and versions installed. Which one is causing the crash ? It seems to be the .vst. Do other formats are synced correctly in OwlPlug ?

  • OwlPlug sync may go deeper than some daw during a regular scan. Most of the time, crashes are caused by a defective plugin or DRM interferences. Can you scan, load, and use the plugin in a daw without any problem ?

  • Sometimes, plugins are outputting error logs on standard output. Do you have something just before a crash if you start OwlPlug from a Terminal ?

open /Applications/OwlPlug.app

@DavidJameson
Copy link
Author

DavidJameson commented Aug 22, 2021

OwlPlug sync may go deeper than some daw during a regular scan. Most of the time, crashes are caused by a defective plugin or DRM interferences. Can you scan, load, and use the plugin in a daw without any problem ?

I mentioned above that I'm one of the developers of Gig Performer, which is a plugin host designed specifically for live performance (as opposed to recording) --- trust me, we're deeply aware of the problem where some hosts (and we are one of them) exercise plugins far more deeply than most DAWs. I mentioned (and posted an image) of Gig Performer properly validating all versions of that plugin (VST, VST3 and AU).

You have several plugin formats (VST, VST3, AU) and versions installed. Which one is causing the crash ? It seems to be the .vst. Do other formats are synced correctly in OwlPlug ?

I don't know -- OwlPlug crashed on that VST and frankly I didn't bother going any further. But here is some more info:

  1. When I ran from a terminal Window, I saw an illegal access from Java
    3956 INFO com.owlplug.host.util.LibraryLoader - Library /var/folders/n2/9h010cts31sc8_n4yd1z__kh0000gn/T//owlplug-host-0.2.0.dylib successfully loaded
    4373 INFO c.o.c.components.ApplicationMonitor - Application monitor started
    4373 INFO c.o.c.components.ApplicationMonitor - Previous application instance not terminated safely
    4498 INFO o.s.boot.SpringApplication - Started application in 4.246 seconds (JVM running for 6.019)
    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by com.jfoenix.adapters.ReflectionHelper (jar:file:/Applications/OwlPlug.app/Contents/app/owlplug.jar!/BOOT-INF/lib/jfoenix-9.0.10.jar!/) to method java.lang.reflect.AccessibleObject.setAccessible0(boolean)
    WARNING: Please consider reporting this to the maintainers of com.jfoenix.adapters.ReflectionHelper
    WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release

  2. Check the attached image where you identify (correctly) the plugin version of the Stage-73 but you don't seem to know who is the manufacturer nor the category. Gig Performer (see image in my original post) correctly identifies both.

screenshot_5193

  1. I tried again to validate that plugin (via running through the command line) and saw the following error from the terminal.

A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x000000017a3e25d6, pid=6721, tid=259

JRE version: OpenJDK Runtime Environment AdoptOpenJDK (14.0.2+12) (build 14.0.2+12)
Java VM: OpenJDK 64-Bit Server VM AdoptOpenJDK (14.0.2+12, mixed mode, tiered, compressed oops, g1 gc, bsd-amd64)
Problematic frame:
C [Stage-73 V2+0x5fc5d6] GetPluginFactory+0x589a6

No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

An error report file with more information is saved as:
/var/folders/n2/9h010cts31sc8_n4yd1z__kh0000gn/T//hs_err_pid6721.log

If you would like to submit a bug report, please visit:
https://github.com/AdoptOpenJDK/openjdk-support/issues
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

Abort trap: 6
[/Application

  1. If I use our own scanner from the command line on that VST (by the way, it's the VST3 version that is failing with OwlPlug) I correctly retrieve all the info

dhj-> validatevst3 /Library/Audio/Plug-Ins/VST3/Stage-73\ V2.vst3

screenshot_5194

(Edited to get rid of stupid markdown)
(edited again so my XML could be included - sigh)
(edited again with an IMAGE of the XML stuff - more sighs)

@DropSnorz
Copy link
Owner

Thank you for these precisions and extra logs.

When I ran from a terminal Window, I saw an illegal access from Java

Java illegal access at startup is a known issue on an OwlPlug dependency. It may be fixed soon. There is no impact on plugin scans. It happens because of illegal use of reflection API between some UI components and UI engine.

Check the attached image where you identify (correctly) the plugin version of the Stage-73 but you don't seem to know who is the manufacturer nor the category. Gig Performer (see image in my original post) correctly identifies both.

If I use our own scanner from the command line on that VST (by the way, it's the VST3 version that is failing with OwlPlug) I correctly retrieve all the info

There is something really strange... I'm not sure it's the VST3 version that is crashing, for me, it's the VST2 but the version displayed in the OwlPlug screenshot is wrong.

From my point of view, In your plugin setup:

  • /Library/Audio/Plug-Ins/VST/Stage-73 V2.vst, is a VST/VST2 but it can't be natively scanned by OwlPlug. Because of this, it's state is "Installed" and not "Active". Because it can't be scanned, metadata are extracted from the inner plist file (/Library/Audio/Plug-Ins/VST/Stage-73 V2.vst/Contents/Info.plist). This is where the version 2.1.0.1.552 is retrieved. Maybe the version in this plist file is wrong and should be 3.36.19.984. Anyway, it's not the root cause of the crash.

  • /Library/Audio/Plug-Ins/VST3/Stage-73 V2.vst3 is a VST3, and validates correctly in GigPerformer/validatevst3 (and Owlplug ?)

Do you have a similar validator tool for vst, and run something like this:

validatevst /Library/Audio/Plug-Ins/VST/Stage-73\ V2.vst

@DavidJameson
Copy link
Author

Sorry, just saw this now. Yes, our validator can handle VST2, VST3 and AU. See below (again, I have to post an image as the XML is being erroneously removed

screenshot_5239

@DavidJameson
Copy link
Author

is a VST/VST2 but it can't be natively scanned by OwlPlug.

Why not?

@DropSnorz
Copy link
Owner

is a VST/VST2 but it can't be natively scanned by OwlPlug.

Why not?

I don't know, it's the problem we are trying to solve. 😉

Which JUCE version are you using to validate plugins (or at least the version used by GigPerformer) ?

@DavidJameson
Copy link
Author

We started with JUCE 4 (bought a commercial license and upgraded over time). That said, we found JUCE to have some very obscure bugs all over the place (some of which they still haven't fixed) and so we ended up just incorporating our own fixes all over the place over time.

Unfortunately, I don't remember any more whether we had to do any fixes to the scanner - that would have been almost 5 years ago now but I wouldn't be surprised if we had to tweak the underlying scanner code at the time.

But looking again at that original stacktrace, I'm wondering if the problem is something funky between the VST2 and Java.

Have you tried writing a simple scanner with JUCE in C++ or even just try running the basic sample plugin host that comes with JUCE to see if that scans properly?

@DropSnorz
Copy link
Owner

Hi @DavidJameson ,

I reproduced the issue on a MacOs Catalina with the OwlPlug latest version (0.17.1) and the demo version of ArturiaStage V2. I've updated OwlPlug view to track unstable plugins more easily. After some tests, the plugin behavior during sync seems unpredictable.

Sometimes, VST2 and VST3 are synced correctly without any crash.

ArturiaPass

49459 DEBUG c.o.core.components.TaskRunner - Task submited to queue - com.owlplug.core.tasks.PluginSyncTask 
49490 DEBUG c.o.core.components.TaskRunner - Task submitted to executor - com.owlplug.core.tasks.PluginSyncTask 
49509 INFO  c.owlplug.core.tasks.PluginSyncTask - Plugin Sync task started
49894 DEBUG c.owlplug.core.tasks.PluginSyncTask - 2 plugins collected
50286 DEBUG c.owlplug.core.tasks.PluginSyncTask - Load plugin using native discovery: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Attempting to load VST: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Creating VST instance: Stage-73 V2
Initialising VST: Stage-73 V2 (3.36.19.984)
61146 DEBUG c.owlplug.core.tasks.PluginSyncTask - Load plugin using native discovery: /Library/Audio/Plug-ins/VST3/Stage-73 V2.vst3
62911 INFO  c.owlplug.core.tasks.PluginSyncTask - Plugin Sync task complete

Sometimes, only the VST2 plugin crashes during sync.

ArturiaVST2Unstable

86283 DEBUG c.o.core.components.TaskRunner - Task submited to queue - com.owlplug.core.tasks.PluginSyncTask 
86285 DEBUG c.o.core.components.TaskRunner - Task submitted to executor - com.owlplug.core.tasks.PluginSyncTask 
86321 INFO  c.owlplug.core.tasks.PluginSyncTask - Plugin Sync task started
86558 DEBUG c.owlplug.core.tasks.PluginSyncTask - 2 plugins collected
86839 DEBUG c.owlplug.core.tasks.PluginSyncTask - Load plugin using native discovery: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Attempting to load VST: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Creating VST instance: Stage-73 V2
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000000150d0e5d6, pid=1132, tid=775
#
# JRE version: OpenJDK Runtime Environment AdoptOpenJDK (14.0.2+12) (build 14.0.2+12)
# Java VM: OpenJDK 64-Bit Server VM AdoptOpenJDK (14.0.2+12, mixed mode, tiered, compressed oops, g1 gc, bsd-amd64)
# Problematic frame:
# C  [Stage-73 V2+0x5fc5d6]  GetPluginFactory+0x589a6
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /var/folders/_t/p7rkh9kd0lz5m6j5w6w4d4v40000gn/T//hs_err_pid1132.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/AdoptOpenJDK/openjdk-support/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Sometimes, only the VST3 plugin crashes during sync.

ArturiaVST3Unstable

256075 DEBUG c.o.core.components.TaskRunner - Task submited to queue - com.owlplug.core.tasks.PluginSyncTask 
256076 DEBUG c.o.core.components.TaskRunner - Task submitted to executor - com.owlplug.core.tasks.PluginSyncTask 
256082 INFO  c.owlplug.core.tasks.PluginSyncTask - Plugin Sync task started
256288 DEBUG c.owlplug.core.tasks.PluginSyncTask - 2 plugins collected
256516 DEBUG c.owlplug.core.tasks.PluginSyncTask - Load plugin using native discovery: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Attempting to load VST: /Library/Audio/Plug-ins/VST/Stage-73 V2.vst
Creating VST instance: Stage-73 V2
Initialising VST: Stage-73 V2 (3.36.19.984)
258492 DEBUG c.owlplug.core.tasks.PluginSyncTask - Load plugin using native discovery: /Library/Audio/Plug-ins/VST3/Stage-73 V2.vst3
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000014d3b75d6, pid=1019, tid=775
#
# JRE version: OpenJDK Runtime Environment AdoptOpenJDK (14.0.2+12) (build 14.0.2+12)
# Java VM: OpenJDK 64-Bit Server VM AdoptOpenJDK (14.0.2+12, mixed mode, tiered, compressed oops, g1 gc, bsd-amd64)
# Problematic frame:
# C  [Stage-73 V2+0x5fc5d6]  GetPluginFactory+0x589a6
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/vagrant/hs_err_pid1019.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/AdoptOpenJDK/openjdk-support/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Something wrong is happening on the plugin side and the JVM can't recover. It's the same issue for both VST2 and VST3 formats. For now, I don't know why it crashes. Sometimes, plugin DRMs are responsible for undesirable side effects.

I have a plugin scanner somewhere made using Juce, I can try to reproduce without the Java layer.

@DavidJameson
Copy link
Author

Well, I think it will be critical to check without Java.

I would note that those Arturia plugins are in use with pretty much every DAW and live plugin host in existence so I'm struggling to buy into the notion that something is wrong on the plugin side.

@Bide-UK
Copy link

Bide-UK commented Nov 29, 2021

  • 1 on this issue

@DropSnorz
Copy link
Owner

Hello @DavidJameson;

A "sandbox scanner" has been added in OwlPlug 1.19.0. A selector is available in the Options tab to choose between two implementations OwlPlug JNI (legacy) and the new OwlPlug Scanner. For now, the legacy implementation is used by default, but based on community feedback, it may be replaced by the new scanner in future releases (#138).

More information about this feature is available on this wiki page.

For now, I still can't understand why the sync fails half the time on Arturia Stage using OwlPlug JNI (legacy).
But I've successfully scanned the Arturia Stage vst2 and vst3 on MacOS without any crashes using OwlPlug Scanner. One time I've faced a timeout (10s without result) during the vst2 sync, but I never reproduced it.

Can you try to sync your plugins collection with Native Discovery set on OwlPlug Scanner ? It should be more stable 🤞

@DavidJameson
Copy link
Author

DavidJameson commented Mar 13, 2022 via email

@DropSnorz
Copy link
Owner

Thank you so much for testing!

Arggg, this is so strange, how the JVM can crash... Seems the legacy scanner is still used 🤔
Clearing all caches and user data in Options will reset the scanner used, so the new scanner must be defined after a hit to "Clear user data".

Can you send me the content of the app logs located in:

~/home/{you}/.owlplug/logs/owlplug.log

Thank you,

@DavidJameson
Copy link
Author

DavidJameson commented Mar 13, 2022 via email

@DropSnorz
Copy link
Owner

Thank you @DavidJameson,

Clearing user data reset the scanner after a reboot. The "preferred" scanner is selected after the application start.
I've opened issue #140 to correctly reflect changes in UI and mention that the app should be restated to truly reset everything.

I can't find attached logs. As you answered by e-mail, Github seems to ignore the attached files.

I agree, the error message you faced is not clear enough. The log will be more detailed.

Thank you for your feedback about the timeout. I may increase it to something like 20 or 30 seconds by default. If a plugin analysis reaches the timeout it will be skipped but the plugin will appear in the list anyway. Maybe I should add an option to increase or decrease this read timeout.

@DavidJameson
Copy link
Author

DavidJameson commented Mar 20, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants