MessageManager deadlock in VST Editor depending on monitor setup


#1

Got a weird one here:

I’m working on an old ThinkPad running Ubuntu 14.04, have a VST plug-in I’ve built that that the audio plugin host demo project can load and display the generic parameter editor without any problems.

However, when I try to display the Plug-in’s Component Editor things get funky: If I’m at my desk using my external monitors everything works as it should. If those monitors are unplugged and I’m using my laptop screen, opening the editor causes the whole app to hang. The second time the host requests the Editor’s Bounds, the wrapper gets stuck in the while (! blockingMessage->lockedEvent.wait (20)) loop while trying to get the MessageManager lock.

I run into a similar issue as well when trying to run the juce demo plug-in: fine as long as I’ve got my external monitors plugged in and am not using my built-in screen, but screwy when the inverse is true. It’s loud though and doesn’t hang, it loads up fine for a fraction of a second, hits an assertion in juce_Image.cpp:403 and crashes.

I’d love any pointers anyone can give, and would be happy to go on a directed excavation for more information if it would help.


#2

I’m really not sure what’s happening here.

If you are using Xrandr (the JUCE default) could you try compiling with JUCE_USE_XRANDR=0?


#3

An overhaul of the X11 backend by @ftonello will be pushed this week. You may want to see if this will fix your issue.


#4

Alrighty, thanks for everyone’s patience, things still hang/crash, here’s what I did:

1.) Pulled a new version of Juce to see if the changes to the backend helped (on v 4.3.1 now)
2.) re-built host and plug-in, and tested.
3.) Un-commented the JUCE_USE_XRENDER flag in my AppConfig.h file, and set it to 0.
4.) re-built plug-in, and tested.
3.) Un-commented the JUCE_USE_XRENDER flag in the audio plugin host demo app AppConfig.h file, and set it to 0.
4.) re-built host, and tested.

I’m at a loss, although very much appreciate the suggestions, thank you.