Sorry for the slow response.
I have only 1 machine capable of running Linux so hard to know how hardware dependent this is.
Here are the stacktraces for the 3 threads that are supposedly running right after hitting the deadlock. This is building against JUCE 6.0.8 master
THREAD NAMED “POOL”
#0 0x7ffff6f78ad3 futex_wait_cancelable(private=, expected=0, futex_word=0x55555607f0c8) (…/sysdeps/unix/sysv/linux/futex-internal.h:88)
#1 ?? __pthread_cond_wait_common (abstime=0x0, mutex=0x55555607eca0, cond=0x55555607f0a0) (pthread_cond_wait.c:502)
#2 ?? __pthread_cond_wait (cond=0x55555607f0a0, mutex=0x55555607eca0) (pthread_cond_wait.c:655)
#3 0x7ffff1fa19fd ??() (/usr/lib/x86_64-linux-gnu/libX11.so.6:??)
#4 0x7ffff1fa1e89 ??() (/usr/lib/x86_64-linux-gnu/libX11.so.6:??)
#5 0x7fffee7e2d4b ??() (/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:??)
#6 0x7fffee774d3d ??() (/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:??)
#7 0x7fffed7b2ba8 ??() (/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.390.141:??)
#8 0x7fffed774929 ??() (/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.390.141:??)
#9 0x7fffed776b4f ??() (/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.390.141:??)
#10 0x7fffee7acb54 ??() (/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:??)
#11 0x7ffff6f71408 __nptl_deallocate_tsd() (pthread_create.c:300)
#12 0x7ffff6f7281b __nptl_deallocate_tsd() (…/sysdeps/nptl/futex-internal.h:200)
#13 ?? start_thread (arg=0x7fffec716700) (pthread_create.c:473)
#14 0x7ffff60d071f clone() (…/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
THREAD NAMED “JUCE Timer”
#0 0x7ffff6f79065 futex_abstimed_wait_cancelable(private=, abstime=0x7fffebf14c80, expected=0, futex_word=0x55555607ef6c) (…/sysdeps/unix/sysv/linux/futex-internal.h:205)
#1 ?? __pthread_cond_wait_common (abstime=0x7fffebf14c80, mutex=0x55555607ef18, cond=0x55555607ef40) (pthread_cond_wait.c:539)
#2 ?? __pthread_cond_timedwait (cond=0x55555607ef40, mutex=0x55555607ef18, abstime=0x7fffebf14c80) (pthread_cond_wait.c:667)
#3 0x5555557455c5 __gthread_cond_timedwait(__cond=0x55555607ef40, __mutex=0x55555607ef18, __abs_timeout=0x7fffebf14c80) (/usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h:871)
#4 0x5555557e13be std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(this=0x55555607ef40, __lock=…, __atime=…) (/usr/include/c++/7/condition_variable:178)
#5 0x5555557ee25d std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(this=0x55555607ef40, __lock=…, __atime=…) (/usr/include/c++/7/condition_variable:106)
#6 0x55555579ef36 std::condition_variable::wait_until<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> >, juce::WaitableEvent::wait(int) const::<lambda()> >(std::unique_lockstd::mutex &, const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > &, juce::WaitableEvent::<lambda()>)(this=0x55555607ef40, __lock=…, __atime=…, __p=…) (/usr/include/c++/7/condition_variable:129)
#7 0x55555579e6c1 std::condition_variable::wait_for<long int, std::ratio<1, 1000>, juce::WaitableEvent::wait(int) const::<lambda()> >(std::unique_lockstd::mutex &, const std::chrono::duration<long, std::ratio<1, 1000> > &, juce::WaitableEvent::<lambda()>)(this=0x55555607ef40, __lock=…, __rtime=…, __p=…) (/usr/include/c++/7/condition_variable:156)
#8 0x5555557985a8 juce::WaitableEvent::wait(this=0x55555607ef10, timeOutMilliseconds=300) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_core/threads/juce_WaitableEvent.cpp:43)
#9 0x5555558219c9 juce:
:TimerThread::run(this=0x55555607ed60) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_events/timers/juce_Timer.cpp:74)
#10 0x5555557708cf juce:
:threadEntryPoint(this=0x55555607ed60) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_core/threads/juce_Thread.cpp:96)
#11 0x5555557709bc juce::juce_threadEntryPoint(userData=0x55555607ed60) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_core/threads/juce_Thread.cpp:118)
#12 0x5555557943c6 juce::threadEntryProc(userData=0x55555607ed60) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:838)
#13 0x7ffff6f726db start_thread(arg=0x7fffebf15700) (pthread_create.c:463)
#14 0x7ffff60d071f clone() (…/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
THREAD NAMED “testGL”
#0 ?? __lll_lock_wait () (…/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135)
#1 0x7ffff6f750f4 __GI___pthread_mutex_lock(mutex=0x7fffeea5a7e8) (…/nptl/pthread_mutex_lock.c:115)
#2 0x7fffee7d5dec ??() (/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:??)
#3 0x7fffee7abe18 ??() (/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:??)
#4 0x7ffff42c99c0 ??() (/usr/lib/x86_64-linux-gnu/libGLX.so.0:??)
#5 0x7ffff42c3231 glXChooseVisual() (/usr/lib/x86_64-linux-gnu/libGLX.so.0:??)
#6 0x555555b28742 juce::OpenGLContext::NativeContext::NativeContext(this=0x55555609e1d0, comp=…, cPixelFormat=…, shareContext=0x0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_opengl/native/juce_OpenGL_linux_X11.h:87)
#7 0x555555b295de juce::OpenGLContext::CachedImage::CachedImage(this=0x55555609edc0, c=…, comp=…, pixFormat=…, contextToShare=0x0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:83)
#8 0x555555b2b88a juce::OpenGLContext::Attachment::attach(this=0x5555560794d0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:842)
#9 0x555555b2b3f8 juce::OpenGLContext::Attachment::Attachment(this=0x5555560794d0, c=…, comp=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:730)
#10 0x555555b20193 juce::OpenGLContext::attachTo(this=0x555556095bf0, component=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_opengl/opengl/juce_OpenGLContext.cpp:969)
#11 0x555555b44283 testGLComp::connectGL(this=0x555556095b10) (/home/justin/Documents/App_Dev/testGL/Source/testGLComp.h:28)
#12 0x555555b42a30 MainComponent::<lambda()>::operator()(void) const(__closure=0x555556095550) (/home/justin/Documents/App_Dev/testGL/Source/MainComponent.cpp:53)
#13 0x555555b43192 std::_Function_handler<void(), MainComponent::MainComponent()::<lambda()> >::_M_invoke(const std::_Any_data &)(__functor=…) (/usr/include/c++/7/bits/std_function.h:316)
#14 0x55555570c6ba std::function<void ()>::operator()() const(this=0x555556095550) (/usr/include/c++/7/bits/std_function.h:706)
#15 0x555555933272 juce::Button::sendClickMessage(this=0x555556095488, modifiers=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:407)
#16 0x555555932fd8 juce::Button::internalClickCallback(this=0x555556095488, modifiers=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:350)
#17 0x55555593367c juce::Button::mouseUp(this=0x555556095488, e=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/buttons/juce_Button.cpp:470)
#18 0x5555559271bc juce::Component::internalMouseUp(this=0x555556095488, source=…, relativePos=…, time=…, oldModifiers=…, pressure=0, orientation=0, rotation=0, tiltX=0, tiltY=0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/components/juce_Component.cpp:2452)
#19 0x5555559e53de juce::MouseInputSourceInternal::sendMouseUp(this=0x55555607a8b0, comp=…, screenPos=…, time=…, oldMods=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:154)
#20 0x5555559e5721 juce::MouseInputSourceInternal::setButtons(this=0x55555607a8b0, screenPos=…, time=…, newButtonState=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:196)
#21 0x5555559e5ebc juce::MouseInputSourceInternal::handleEvent(this=0x55555607a8b0, newPeer=…, positionWithinPeer=…, time=…, newMods=…, newPressure=0, newOrientation=0, pen=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:333)
#22 0x555555929fa0 juce::MouseInputSource::handleEvent(this=0x7fffffffe170, peer=…, pos=…, time=1617765269548, mods=…, pressure=0, orientation=0, penDetails=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp:633)
#23 0x5555559b1a33 juce::ComponentPeer::handleMouseEvent(this=0x555556090b10, type=juce::MouseInputSource::mouse, pos=…, newMods=…, newPressure=0, newOrientation=0, time=1617765269548, pen=…, touchIndex=0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:87)
#24 0x5555559ce6b8 juce::XWindowSystem::handleButtonReleaseEvent(this=0x55555607ab60, peer=0x555556090b10, buttonRelEvent=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3211)
#25 0x5555559cd8db juce::XWindowSystem::handleWindowMessage(this=0x55555607ab60, peer=0x555556090b10, event=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2945)
#26 0x5555559cf6a9 juce::WindowingHelpers::windowMessageReceive(event=…) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:3465)
#27 0x5555559cd0e8 juce::XWindowSystem::<lambda(int)>::operator()(int) const(__closure=0x55555607a1d0) (/home/justin/Documents/App_Dev/SDKs/JUCE/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp:2874)
#28 0x5555559d51e3 std::_Function_handler<void(int), juce::XWindowSystem::initialiseXDisplay()::<lambda(int)> >::_M_invoke(const std::_Any_data &, int &&)(__functor=…, __args#0=@0x7fffffffe3f4: 5) (/usr/include/c++/7/bits/std_function.h:316)
#29 0x555555828cc0 std::function<void (int)>::operator()(int) const(this=0x55555607a1d0, __args#0=5) (/usr/include/c++/7/bits/std_function.h:706)