[Tokodon] [Bug 490129] New: Tokodon crashes on display hotplug events

Christopher Snowhill bugzilla_noreply at kde.org
Thu Jul 11 23:05:57 BST 2024


https://bugs.kde.org/show_bug.cgi?id=490129

            Bug ID: 490129
           Summary: Tokodon crashes on display hotplug events
    Classification: Applications
           Product: Tokodon
           Version: 24.05.2
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: unassigned-bugs at kde.org
          Reporter: kode54 at gmail.com
                CC: carl at carlschwan.eu, josh at redstrate.com
  Target Milestone: ---

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 at 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 at entry=0x5f5392a64da0, 
    isPrimary=isPrimary at 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 at entry=0x7ffe4c4d6150,
fn=<optimized out>, 
    rvalue=<optimized out>, avalue=<optimized out>, closure=closure at entry=0x0)
    at ../src/x86/ffi64.c:673
#16 0x000074daf1ecabd3 in ffi_call (cif=cif at entry=0x7ffe4c4d6150, fn=<optimized
out>, 
    rvalue=rvalue at entry=0x0, avalue=avalue at entry=0x7ffe4c4d6220) at
../src/x86/ffi64.c:710
#17 0x000074db05d80860 in wl_closure_invoke
(closure=closure at entry=0x74dae00043a0, 
    target=<optimized out>, target at entry=0x5f5391ce3400, opcode=opcode at entry=2, 
    data=<optimized out>, flags=1) at ../wayland-1.23.0/src/connection.c:1228
#18 0x000074db05d810d9 in dispatch_event (display=display at entry=0x5f538ba94e50, 
    queue=queue at 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 at 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 at entry=0x74dae8000f00, 
    block=block at entry=1, dispatch=dispatch at 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
```

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Unassigned-bugs mailing list