-
Notifications
You must be signed in to change notification settings - Fork 152
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
loading LV2 plugin freezes hosts #7
Comments
I can open in jalv.qt5, but generic GUI, also jalv.gtk3 loads in JACK but no GUI... |
In my case carla opens the plugin but crashes when opening the GUI |
I'm also having this problem, but I'm on a weird architecture, so I can't be sure that any of my problems are also experienced on x86. In my case, I can run the standalone version fine, but when I load the LV2 plugin, there's a deadlock in the If people on x86 experiencing these freezes could check if the cause is the same, that would be helpful. In my case, I ran Ardour in GDB with |
Yep. Here's the (truncated) backtrace on x86_64:
|
I believe I've fixed this issue in my fork of Vital, along with a number of other fixes. See this commit specifically for details about what was causing the issue and for the one-line fix. |
Just to chime in, the fix in @taylordotfish's repo does seem to work. I'm able to build and run the LV2 version in Ardour with no hiccups (yet) :) |
You probably don't want to undo the lock there since I think that could to things that require it. Probably can just remove the lock from the getUI function in third_party/JUCE/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp |
@mtytel Yeah, I was a bit unsure about undoing the lock there, but I'm also concerned about removing the lock in I think the I definitely think there's a bug in the upstream JUCE implementation—without unlocking there, But I'm not particularly familiar with JUCE and may very well be wrong, so if anyone has an explanation of a data race that could occur due to unlocking there, please let me know. |
Here's an alternative fix for the deadlock. It's a larger change, but I think it’s easier to reason about the correctness of this code. With this change, |
I guess my hesitancy is editing more central JUCE code when it should be more on the LV2 wrapping side. The core code works for the VST/VST3/standalone and used to work for LV2 so I'm assuming the VST wrappers were updated and LV2 needs some changes (since I didn't touch much when upgrading juce) So ideally a fix would just have changes to the LV2 wrapper but I haven't dug deep into this yet. |
Yeah, I would also prefer a solution that doesn't involve modifying JUCE's internals. The fact that there's even a deadlock at all is actually itself an indication that |
Wanting to try out this build on arch linux, I created a little pkgname=vital-synth-lv2-git
pkgver=r32.ebeeaab
pkgver() {
cd vital
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
pkgrel=1
pkgdesc="Powerful wavetable synthesizer with realtime modulation feedback. Vital is a MIDI enabled polyphonic music synthesizer with an easy to use parameter modulation system with real-time graphical feedback."
arch=('x86_64')
url="https://vital.audio"
license=('custom')
depends=('alsa-lib>=1.0.16' 'freetype2>=2.2.1' 'gcc-libs' 'gcc>=3.3.1' 'glib2>=2.12.0' 'glibc>=2.17' 'libcurl-gnutls>=7.16.2' 'libgl' 'libglvnd' 'libsecret>=0.7')
source_x86_64=("git+https://github.com/taylordotfish/vital.git")
sha512sums_x86_64=('SKIP')
build() {
cd vital
make lv2
}
package() {
cd vital
make install_lv2 PREFIX="${pkgdir}/usr"
} Hope that it helps others wanting to try out and/or contribute to this great synth :-) |
In jalv.gtk3 this crashes as soon as I try interacting with the UI:
|
@dromer Hm, I can't reproduce this—if you build the commit right before that ( |
Nope, that commit also freezes/crashes the UI. Occasionally I can interact with it briefly, but then it crashes again. Btw HEAD does work fine in Carla as far as I can tell |
@taylordotfish latest HEAD (ebeeaab) through gdb:
|
@mtytel I came up with a workaround for the deadlock that doesn't require changes to any part of JUCE besides the LV2 wrapper. The change is simply to instantiate the UI on the message thread itself. (I do still think there's a bug in juce_linux_Messaging.cpp, but the right way of getting that fixed would really be to report it to the JUCE developers. This workaround seems to work in at least Ardour, Carla, and jalv.gtk3.) @dromer Could you try out this change? I'm wondering if this will also fix the issue you're experiencing, as it changes which thread |
@taylordotfish ok! fingers crossed it doesn't take down my entire desktop this time (yes that happened on the other test you had me do :P) |
|
Top, no biggie for me. I'm already happy that the .lv2 works with Carla :) |
FYI I just updated DISTRHO/JUCE to latest upstream JUCE, rebasing all patches. |
The hero @falkTX arrives 🎉 |
@falkTX I've been trying to build Vital with the newest version of DISTRHO/JUCE, and the UI shows without locking up, but in Ardour and jalv.gtk3, I get a segfault when I close the UI window:
|
I didnt get that far yet. Was updating juce as first step. |
I have Vital as Vitalium in https://github.com/DISTRHO/DISTRHO-Ports now. |
oh, for building, you might want to use
so it skips all other plugins except vitalium |
The crash on close has been "fixed" on DISTRHO/DISTRHO-Ports@8f7eed6 |
@taylordotfish In your fork, when editing wavetables, the "Remove Group" button does not seem to remove individual sources, meaning that one cannot properly switch out a wave Source with, e.g, a line source. Either that, or it's just an issue with running Vial as an LV2. I can't tell, since running the original just freezes Ardour whenever I try to open up the GUI as per this issue. |
Loading the LV2 plugin with either Ardour or Zrythm freezes the host. Carla does not detect the plugin.
The text was updated successfully, but these errors were encountered: