Skip to content

Vitalium VST3 freezes when resized with more than one instance open #119

@xard-dev

Description

@xard-dev

Information

OS: 64-bit Ubuntu 22.04
Plugin Hosts: Ardour 7, Carla
Plugin variant: VST3

How to reproduce

  1. add one instance of VST3 Vitalium
  2. open the instance GUI
  3. resize the GUI
  4. add second instance of VST3 Vitalium
  5. open the second instance GUI while keeping the first open
  6. resize the second instance GUI

Result

The interface freezes (does not segfault / crash).

Additional details

When tested using local debug build of the VST3 Vitalium from commit f2dbade under carla --dbg following backtrace can be interrupted from the scenario:

0  __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, 
    futex_word=0x55555de6ba08) at ./nptl/futex-internal.c:57
#1  __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, 
    expected=0, futex_word=0x55555de6ba08) at ./nptl/futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55555de6ba08, 
    expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, 
    private=private@entry=0) at ./nptl/futex-internal.c:139
#3  0x00007ffff7c93ac1 in __pthread_cond_wait_common (abstime=0x0, clockid=0, 
    mutex=0x55555de3a0a0, cond=0x55555de6b9e0) at ./nptl/pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x55555de6b9e0, mutex=0x55555de3a0a0)
    at ./nptl/pthread_cond_wait.c:627
#5  0x00007ffff2ce7165 in ?? () from /lib/x86_64-linux-gnu/libX11.so.6
#6  0x00007ffff2ce7882 in ?? () from /lib/x86_64-linux-gnu/libX11.so.6
#7  0x00007ffff2ce96bb in XLockDisplay () from /lib/x86_64-linux-gnu/libX11.so.6
#8  0x00007fffb6af0638 in juce::XWindowSystemUtilities::ScopedXLock::ScopedXLock (
    this=0x7fffffffba17)
    at ../libs/juce6/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:84
#9  0x00007fffb6af5069 in juce::XWindowSystem::isMinimised (this=0x55555742e5d0, 
    windowH=62914588)
    at ../libs/juce6/source/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:1839
#10 0x00007fffb6b5446f in juce::LinuxComponentPeer::isMinimised (this=0x55556eaf8580)
    at ../libs/juce6/source/modules/juce_gui_basics/native/juce_linux_Windowing.cpp:177
#11 0x00007fffb6a49599 in juce::Component::isShowing (this=0x55556d84e420)
    at ../libs/juce6/source/modules/juce_gui_basics/components/juce_Component.cpp:602
#12 0x00007fffb6a4ab60 in juce::Component::setBounds (this=0x55556d84e420, x=0, y=0, w=1270, 
    h=744) at ../libs/juce6/source/modules/juce_gui_basics/components/juce_Component.cpp:1108
#13 0x00007fffb6a4afca in juce::Component::setSize (this=0x55556d84e420, w=1270, h=744)
    at ../libs/juce6/source/modules/juce_gui_basics/components/juce_Component.cpp:1200
#14 0x00007fffb67338bc in juce::JuceVST3EditController::JuceVST3Editor::onSize (
    this=0x555562dd09a0, newSize=0x7fffffffbb90)
    at ../libs/juce6/source/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:1297
...

Full backtrace: 2023-02-26_vitalium_resize_freeze_bt.log

Looks like the "freeze" comes from a XLockDisplay being reserved but never released.

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