falkTX / Carla

Audio plugin host
https://kx.studio/carla
1.55k stars 144 forks source link

Wayland: BadAtom (invalid Atom parameter) #1802

Closed UltraBlackLinux closed 10 months ago

UltraBlackLinux commented 10 months ago

Whenever I try to load the Vital VST I get the following error, after which carla crashes.

X Error of failed request:  BadAtom (invalid Atom parameter)
  Major opcode of failed request:  20 (X_GetProperty)
  Atom id in failed request:  0x0
  Serial number of failed request:  62
  Current serial number in output stream:  62
[carla] Carla assertion failure: "engine == nullptr" in file CarlaHostImpl.hpp, line 87
JUCE Assertion failure in juce_Singleton.h:50
JUCE Assertion failure in juce_Singleton.h:50
JUCE Assertion failure in juce_Singleton.h:50

I cannot reproduce this error with any other plugin I tried (surge, dexed, and a few others).

The DAW Zrythm has it's own carla instance running, which then manages the plugins. Whenever I load that plugin there (while forcing wayland support via GDK_BACKEND=wayland /path/to/zrythm), I get the same error, and it's definitely related to Wayland there.

Incidentally, it's also related to wayland here: If I run carla via QT_QPA_PLATFORM=xcb carla I can load the plugin normally.

After running carla via xwayland once, I can now load Vital again. It seems to be very hit and miss when it works and when it doesn't. On carla it tends to work on wayland, on Zrythm it tends not to, but there's always a chance that it actually succeeds.

Are you able to fix that?

falkTX commented 10 months ago

maybe related to https://github.com/falkTX/Carla/blob/main/source/utils/CarlaPluginUI.cpp#L1249, that is the only time a "get property" call is done without error handling (plus the same call again a bit below in the function)

would be interesting to know if disabling that part of the code fixes things, or not. otherwise it is a plugin bug and then very little we can do about it

UltraBlackLinux commented 10 months ago

Hmm. It might just very well be a plugin bug, I didn't even consider that. Both Dexed and Vital use JUICE, so that is probably not an issue. I'm gonna ask the vital devs too. Luckily it's FOSS.

maybe related to

How exactly do I disable that? Is there a specific return code I should use instead?

Edit: I have just managed to reproduce the same crash vial Ildaeil: SDL_VIDEODRIVER=wayland Ildaeil since the environment variable now no longer explicitly targets carla, it shows that it's a vital bug (I think).

Reopen if you think it isn't.

falkTX commented 10 months ago

I'm gonna ask the vital devs too. Luckily it's FOSS.

vital is not foss, not in the usual sense. they only pushed 1 single source 1 time, while the vital plugin continues the receive updates the source that is public does not. just an FYI

How exactly do I disable that? Is there a specific return code I should use instead?

just comment out the entire function I guess, it is something that cannot work under wayland anyway (it tries to bring the window to the front by means of "transient hint", but we cant do that between wayland and x11 windows)

falkTX commented 10 months ago

note that ildaeil and carla use the same hosting code, so it can still be carla's fault here

UltraBlackLinux commented 10 months ago

I'm aware of that, but I just tried compiling carla without that windowing code (HAVE_X11=false), and it still throws the same error.

falkTX commented 10 months ago

Not sure if that is possible, if you build carla with HAVE_X11 forcefully set to false, it wont load linux plugin guis, at least for embed types.

UltraBlackLinux commented 10 months ago

this time, I only removed the ifdef that you linked to and I still get that error, so probably a vital issue.