SUMMARY Tokodon crashes reliably on display hotplug events, which occur when my primary display is powered back on after having been powered off for a while, such as DPMS power off. It remains attached until powered back on. STEPS TO REPRODUCE 1. Start Tokodon 2. Leave it running 3. Detach a display 4. Reattach it OBSERVED RESULT Tokodon crashes in a Qt event handler. EXPECTED RESULT Tokodon should not need to watch for display detach or reattach events. SOFTWARE/OS VERSIONS Linux/KDE Plasma: Arch Linux running 6.9.8-1-cachyos KDE Plasma Version: 6.1.2 KDE Frameworks Version: 6.3.0 Qt Version: 6.7.2 ADDITIONAL INFORMATION This crash is occurring from a labwc git / wlroots 0.18 desktop running Tokodon. It may not be happening this way if I were running Plasma as my current desktop. Backtrace: ``` #0 QScopedPointer<QPlatformScreenPrivate, QScopedPointerDeleter<QPlatformScreenPrivate> >::get ( this=0x8) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qscopedpointer.h:110 #1 qGetPtrHelper<QScopedPointer<QPlatformScreenPrivate, QScopedPointerDeleter<QPlatformScreenPrivate> > const> (ptr=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qtclasshelpermacros.h:79 #2 QPlatformScreen::d_func (this=0x0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qplatformscreen.h:45 #3 QPlatformScreen::screen (this=this@entry=0x0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qplatformscreen.cpp:115 #4 0x000074db01ba07b6 in QtWaylandClient::QWaylandWindow::handleScreensChanged ( this=0x5f538cb6ceb0) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandwindow.cpp:1410 #5 0x000074db077a16f7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:469 #6 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4086 #7 0x000074db077a16f7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:469 #8 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4086 #9 0x000074db07deb0a1 in QGuiApplication::screenAdded (this=<optimized out>, _t1=0x5f53910784b0) at /usr/src/debug/qt6-base/build/src/gui/Gui_autogen/include/moc_qguiapplication.cpp:421 #10 QWindowSystemInterface::handleScreenAdded (platformScreen=platformScreen@entry=0x5f5392a64da0, isPrimary=isPrimary@entry=false) --Type <RET> for more, q to quit, c to continue without paging--c at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:727 #11 0x000074db01b74eea in QtWaylandClient::QWaylandDisplay::handleScreenInitialized ( this=0x5f538ba94c20, screen=<optimized out>) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylanddisplay.cpp:601 #12 0x000074db01b97ec6 in QtWaylandClient::QWaylandScreen::maybeInitialize (this=0x5f5392a64da0) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandscreen.cpp:74 #13 QtWaylandClient::QWaylandScreen::maybeInitialize (this=0x5f5392a64da0) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandscreen.cpp:65 #14 0x000074daf1ecb596 in ffi_call_unix64 () at ../src/x86/unix64.S:104 #15 0x000074daf1ec800e in ffi_call_int (cif=cif@entry=0x7ffe4c4d6150, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673 #16 0x000074daf1ecabd3 in ffi_call (cif=cif@entry=0x7ffe4c4d6150, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffe4c4d6220) at ../src/x86/ffi64.c:710 #17 0x000074db05d80860 in wl_closure_invoke (closure=closure@entry=0x74dae00043a0, target=<optimized out>, target@entry=0x5f5391ce3400, opcode=opcode@entry=2, data=<optimized out>, flags=1) at ../wayland-1.23.0/src/connection.c:1228 #18 0x000074db05d810d9 in dispatch_event (display=display@entry=0x5f538ba94e50, queue=queue@entry=0x5f538ba94f48) at ../wayland-1.23.0/src/wayland-client.c:1670 #19 0x000074db05d814f3 in dispatch_queue (display=0x5f538ba94e50, queue=0x5f538ba94f48) at ../wayland-1.23.0/src/wayland-client.c:1816 #20 wl_display_dispatch_queue_pending (display=0x5f538ba94e50, queue=0x5f538ba94f48) at ../wayland-1.23.0/src/wayland-client.c:2058 #21 0x000074db01b690a6 in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylanddisplay.cpp:227 #22 0x000074db0778c00f in QObject::event (this=0x5f538ba94c20, e=0x74dae0001800) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1452 #23 0x000074db086fc51c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5f538ba94c20, e=0x74dae0001800) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #24 0x000074db07744d28 in QCoreApplication::notifyInternal2 (receiver=0x5f538ba94c20, event=event@entry=0x74dae0001800) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #25 0x000074db077450eb in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x74dae0001800) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583 #26 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5f538b9f0ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1940 #27 0x000074db079a49ec in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1797 #28 postEventSourceDispatch (s=0x5f538ba92130) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:244 #29 0x000074db06f22ab9 in g_main_dispatch (context=0x74dae8000f00) at ../glib/glib/gmain.c:3344 #30 0x000074db06f849e7 in g_main_context_dispatch_unlocked (context=0x74dae8000f00) at ../glib/glib/gmain.c:4152 #31 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x74dae8000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217 #32 0x000074db06f21fc5 in g_main_context_iteration (context=0x74dae8000f00, may_block=1) at ../glib/glib/gmain.c:4282 #33 0x000074db079a2cbd in QEventDispatcherGlib::processEvents (this=0x5f538ba9ddc0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394 #34 0x000074db0774f01e in QEventLoop::processEvents (this=0x7ffe4c4d6850, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100 #35 QEventLoop::exec (this=0x7ffe4c4d6850, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182 #36 0x000074db0774934d in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74 #37 0x00005f534dbee305 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/tokodon/tokodon-24.05.2/src/main.cpp:284 ```
*** This bug has been marked as a duplicate of bug 489072 ***