Bug 474987 - Crash in KWin::EglGbmLayerSurface::queryRenderTime
Summary: Crash in KWin::EglGbmLayerSurface::queryRenderTime
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: master
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: qt6, wayland-only
Depends on:
Blocks:
 
Reported: 2023-09-28 13:44 UTC by Fushan Wen
Modified: 2023-12-08 10:43 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:
qydwhotmail: Wayland+


Attachments
kwin_wayland-20230928-213422.kcrash (61.50 KB, text/vnd.kde.kcrash-report)
2023-09-28 13:44 UTC, Fushan Wen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Fushan Wen 2023-09-28 13:44:22 UTC
Created attachment 161931 [details]
kwin_wayland-20230928-213422.kcrash

SUMMARY
kwin_wayland crashed at login.


STEPS TO REPRODUCE
1. Logout from Plasma 5
2. Log in to Plasma 6
3. 

OBSERVED RESULT


EXPECTED RESULT


SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: kwin at d6bc5d9b14d8b7f5c7082aed3102b84c16148514
KDE Frameworks Version: 
Qt Version: 6.5.2

ADDITIONAL INFORMATION
Thread 1 (Thread 0x7efed88aeb00 (LWP 16436)):
#0  std::chrono::operator-<long, std::ratio<1l, 1000000000l>, long, std::ratio<1l, 1000000000l> >(std::chrono::duration<long, std::ratio<1l, 1000000000l> > const&, std::chrono::duration<long, std::ratio<1l, 1000000000l> > const&) (__rhs=<optimized out>, __lhs=<optimized out>) at /usr/include/c++/13/bits/chrono.h:708
#1  std::chrono::operator-<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (__rhs=<error reading variable: Cannot access memory at address 0x198>, __lhs=<error reading variable: Cannot access memory at address 0x1a0>) at /usr/include/c++/13/bits/chrono.h:1141
#2  KWin::EglGbmLayerSurface::queryRenderTime() const (this=0x315d278) at /home/qydw/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:171
#3  0x00007efedea9f512 in KWin::DrmAbstractOutput::pageFlipped(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) const (this=0x1b0ea00, timestamp=std::chrono::duration = { 198441376013000ns }) at /home/qydw/kde/src/kwin/src/backends/drm/drm_abstract_output.cpp:37
#4  0x00007efedead0b14 in KWin::DrmPipeline::pageFlipped(std::chrono::duration<long, std::ratio<1l, 1000000000l> >, KWin::DrmPipeline::PageflipType) (this=<optimized out>, timestamp=std::chrono::duration = { <optimized out>ns }, timestamp@entry=std::chrono::duration = { 198441376013000ns }, type=<optimized out>) at /home/qydw/kde/src/kwin/src/backends/drm/drm_pipeline.cpp:420
#5  0x00007efedeaa4bc6 in KWin::DrmAtomicCommit::pageFlipped(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) const (this=0x1a891f0, timestamp=std::chrono::duration = { 198441376013000ns }) at /home/qydw/kde/src/kwin/src/backends/drm/drm_commit.cpp:131
#6  0x00007efedeac13e4 in KWin::DrmGpu::pageFlipHandler(int, unsigned int, unsigned int, unsigned int, unsigned int, void*) (fd=<optimized out>, sequence=<optimized out>, sec=198441, usec=376013, crtc_id=<optimized out>, user_data=0x1a891f0) at /home/qydw/kde/src/kwin/src/backends/drm/drm_gpu.cpp:558
#7  0x00007efedb47f827 in drmHandleEvent (fd=21, evctx=0x7ffe4df21b40) at ../xf86drmMode.c:1060
#8  0x00007efedeac0698 in KWin::DrmGpu::dispatchEvents() (this=<optimized out>) at /home/qydw/kde/src/kwin/src/backends/drm/drm_gpu.cpp:567
#9  0x00007efedb7ba593 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe4df21c70, r=0x1634ce0, this=0x1776980) at /usr/src/debug/qtbase-everywhere-src-6.5.2/build/include/QtCore/../../../src/corelib/kernel/qobjectdefs_impl.h:363
#10 doActivate<false>(QObject*, int, void**) (sender=0x1771d60, signal_index=3, argv=0x7ffe4df21c70) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/corelib/kernel/qobject.cpp:3992
#11 0x00007efedb7c17ff in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x1771d60, _t1=..., _t2=<optimized out>, _t3=...) at /usr/src/debug/qtbase-everywhere-src-6.5.2/build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:231
#12 0x00007efedb7c239e in QSocketNotifier::event(QEvent*) (this=0x1771d60, e=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/corelib/kernel/qsocketnotifier.cpp:326
#13 0x00007efedc9beb2e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x1771d60, e=0x7ffe4df21db0) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/widgets/kernel/qapplication.cpp:3287
#14 0x00007efedb765d88 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1771d60, event=0x7ffe4df21db0) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/corelib/kernel/qcoreapplication.cpp:1118
#15 0x00007efedb88dc0c in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=this@entry=0x15916e0) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/corelib/kernel/qeventdispatcher_unix.cpp:268
#16 0x00007efedb88e6d1 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=..., flags@entry=...) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/corelib/kernel/qeventdispatcher_unix.cpp:477
#17 0x00007efedc1f8fad in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#18 0x00007efedb7701aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffe4df21f90, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.5.2/build/include/QtCore/../../../src/corelib/global/qflags.h:34
#19 0x00007efedb769cf6 in QCoreApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.5.2/build/include/QtCore/../../../src/corelib/global/qflags.h:74
#20 0x00007efedbde0fcc in QGuiApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/gui/kernel/qguiapplication.cpp:1908
#21 0x00007efedc9bbfd5 in QApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.5.2/src/widgets/kernel/qapplication.cpp:2566
#22 0x0000000000432878 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/qydw/kde/src/kwin/src/main_wayland.cpp:611
Comment 1 Bug Janitor Service 2023-09-28 13:51:34 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4461
Comment 2 Zamundaaa 2023-09-28 14:36:37 UTC
Git commit d33c6b5409b908a56af689a208d943360fca3c27 by Xaver Hugl.
Committed on 28/09/2023 at 15:47.
Pushed by zamundaaa into branch 'master'.

backends/drm: don't crash if the surface is nullptr

M  +3    -0    src/backends/drm/drm_egl_layer_surface.cpp

https://invent.kde.org/plasma/kwin/-/commit/d33c6b5409b908a56af689a208d943360fca3c27
Comment 3 David Edmundson 2023-12-08 10:43:20 UTC
Lets assume this is fixed with the above MR given we have no other reports