Summary: | kwin_wayland crashes on simpledrm | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | bluescreenavenger |
Component: | platform-drm | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | xaver.hugl |
Priority: | NOR | ||
Version: | git master | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/commit/3e24bc008a1c9b7f38aef15e07902e0d8213b80e | Version Fixed In: | |
Sentry Crash Report: |
Description
bluescreenavenger
2021-11-14 23:35:53 UTC
simpledrm is almost certainly lacking a cursor plane. Should be easy enough to fix. Can you attach the output of drm_info, to make sure that is the case? A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/1670 I assume you mean the output of this utility https://github.com/ascent12/drm_info Driver: simpledrm (DRM driver for simple-framebuffer platform devices) version 1.0.0 (20200625) on Linux 5.14.17 DRM_CLIENT_CAP_ASPECT_RATIO supported DRM_CLIENT_CAP_ATOMIC supported DRM_CLIENT_CAP_STEREO_3D supported DRM_CLIENT_CAP_UNIVERSAL_PLANES supported DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported DRM_CAP_ADDFB2_MODIFIERS = 1 DRM_CAP_ASYNC_PAGE_FLIP = 0 DRM_CAP_CRTC_IN_VBLANK_EVENT = 1 DRM_CAP_CURSOR_HEIGHT = 64 DRM_CAP_CURSOR_WIDTH = 64 DRM_CAP_DUMB_BUFFER = 1 DRM_CAP_DUMB_PREFERRED_DEPTH = 24 DRM_CAP_DUMB_PREFER_SHADOW = 0 DRM_CAP_PAGE_FLIP_TARGET = 0 DRM_CAP_PRIME = 3 DRM_CAP_SYNCOBJ = 0 DRM_CAP_SYNCOBJ_TIMELINE = 0 DRM_CAP_TIMESTAMP_MONOTONIC = 1 DRM_CAP_VBLANK_HIGH_CRTC = 1 Device: platform simple-framebuffer Connectors Connector 0 Object ID: 31 Type: unknown Encoders: {35} Properties "CRTC_ID" (atomic): object CRTC = 34 "DPMS": enum {"On", "Standby", "Suspend", "Off"} = On "EDID" (immutable): blob = <nil> "TILE" (immutable): blob = <nil> "link-status": enum {"Good", "Bad"} = Good "non-desktop" (immutable): range [0, 1] = 0 Encoders Encoder 0 Object ID: 35 Type: none CRTCs: {0} Clones: {0} CRTCs CRTC 0 Object ID: 34 Gamma size: 0 Properties "ACTIVE" (atomic): range [0, 1] = 1 "MODE_ID" (atomic): blob = 800x600 "OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0 "VRR_ENABLED": range [0, 1] = 0 Planes Plane 0 Object ID: 32 CRTCs: {0} Formats: RGB888 (0x34324752) XRGB8888 (0x34325258) ARGB8888 (0x34325241) RGB565 (0x36314752) Properties "CRTC_H" (atomic): range [0, INT32_MAX] = 600 "CRTC_ID" (atomic): object CRTC = 34 "CRTC_W" (atomic): range [0, INT32_MAX] = 800 "CRTC_X" (atomic): signed range [INT32_MIN, INT32_MAX] = 0 "CRTC_Y" (atomic): signed range [INT32_MIN, INT32_MAX] = 0 "FB_ID" (atomic): object FB = 42 "IN_FENCE_FD" (atomic): signed range [-1, INT32_MAX] = -1 "IN_FORMATS" (immutable): blob linear (0x0) RGB888 (0x34324752) XRGB8888 (0x34325258) ARGB8888 (0x34325241) RGB565 (0x36314752) "SRC_H" (atomic): range [0, UINT32_MAX] = 600 "SRC_W" (atomic): range [0, UINT32_MAX] = 800 "SRC_X" (atomic): range [0, UINT32_MAX] = 0 "SRC_Y" (atomic): range [0, UINT32_MAX] = 0 "type" (immutable): enum {"Overlay", "Primary", "Cursor"} = Primary Yes. The cursor plane is indeed missing; the MR will fix that (In reply to Zamundaaa from comment #4) > Yes. The cursor plane is indeed missing; the MR will fix that I get a different crash with it now, lots of cursor stuff in the stack, rebuilding it with the Debug symbols again... After trying the new MR #0 0x00007f9ce36a9982 in QImage::setDevicePixelRatio(double) () from /opt/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #1 0x00007f9cdcbf7c62 in KWin::DrmOutput::updateCursor (this=0x563036e6ad40) at /srcbuild/kwin/src/backends/drm/drm_output.cpp:144 cursor = 0x563036b4dd70 cursorImage = <incomplete type> c = 0x0 p = {static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f9ce3903e60, data = 0x7f9ce3903d80, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x0}} #2 0x00007f9cdcbee0a0 in KWin::DrmBackend::updateCursor (this=0x5630369fd750) at /srcbuild/kwin/src/backends/drm/drm_backend.cpp:519 output = 0x563036e6ad40 __for_range = @0x5630369fd7d8: {d = 0x56303703a4b0} __for_begin = 0x56303703a4c8 __for_end = 0x56303703a4d0 cursor = <optimized out> success = true __PRETTY_FUNCTION__ = "void KWin::DrmBackend::updateCursor()" #3 0x00007f9ce331af7c in ?? () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #4 0x00007f9ce4ecdbb5 in KWin::Cursors::currentCursorChanged (this=<optimized out>, _t1=<optimized out>) at /srcbuild/kwin/build/src/kwin_autogen/EWIEGA46WW/moc_cursor.cpp:385 _a = {0x0, 0x7ffe5eda60d8} #5 0x00007f9ce331af7c in ?? () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #6 0x00007f9ce4f5f1a7 in operator() (__closure=0x5630371c3500) at /srcbuild/kwin/src/pointer_input.cpp:136 cursor = 0x563036b4dd70 this = 0x563036a8c120 this = <optimized out> cursor = <optimized out> #7 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::PointerInputRedirection::init()::<lambda()> >::call ( arg=<optimized out>, f=...) at /opt/include/QtCore/qobjectdefs_impl.h:146 No locals. #8 QtPrivate::Functor<KWin::PointerInputRedirection::init()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /opt/include/QtCore/qobjectdefs_impl.h:256 No locals. #9 QtPrivate::QFunctorSlotObject<KWin::PointerInputRedirection::init()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x5630371c34f0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /opt/include/QtCore/qobjectdefs_impl.h:443 No locals. #10 0x00007f9ce331af7c in ?? () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #11 0x00007f9ce4f60437 in KWin::PointerInputRedirection::init (this=0x563036a8c120) at /srcbuild/kwin/src/pointer_input.cpp:139 setupMoveResizeConnection = {__this = <optimized out>} clients = {<QListSpecialMethods<KWin::AbstractClient*>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = { _q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x563036a58630}, d = 0x563036a58630}} #12 0x00007f9ce4f35c3d in KWin::InputRedirection::setupWorkspace (this=0x563036a54f70) at /srcbuild/kwin/src/input.cpp:2209 No locals. #13 0x00007f9ce331af7c in ?? () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #14 0x00005630355e1d87 in KWin::ApplicationWayland::continueStartupWithScene (this=0x7ffe5eda6b98) at /srcbuild/kwin/src/main_wayland.cpp:180 __PRETTY_FUNCTION__ = "void KWin::ApplicationWayland::continueStartupWithScene()" #15 0x00007f9ce331af7c in ?? () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #16 0x00007f9ce4efa8d5 in KWin::Compositor::setupStart (this=0x563036b47e90) at /srcbuild/kwin/src/composite.cpp:311 supportedCompositors = {d = 0x563036a1dbf0} userConfigIt = 0x563036a1dc08 __PRETTY_FUNCTION__ = {<optimized out> <repeats 36 times>} #17 0x00007f9ce4efb035 in KWin::WaylandCompositor::start (this=0x563036b47e90) at /srcbuild/kwin/src/composite.cpp:683 No locals. #18 0x00007f9ce331439c in QObject::event(QEvent*) () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #19 0x00007f9ce3b710c5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/lib/x86_64-linux-gnu/libQt5Widgets.so.5 No symbol table info available. #20 0x00007f9ce32fdafa in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #21 0x00007f9ce32fdd61 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #22 0x00007f9ce332caea in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #23 0x000056303567ecc8 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () No symbol table info available. #24 0x00007f9ce32fb692 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #25 0x00007f9ce32ff873 in QCoreApplication::exec() () from /opt/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #26 0x00005630355e042a in main (argc=<optimized out>, argv=<optimized out>) at /srcbuild/kwin/src/main_wayland.cpp:740 userSignals = {__val = {2560, 0 <repeats 15 times>}} environment = {d = {d = 0x5630369db050}} a = {<KWin::ApplicationWaylandAbstract> = {<KWin::Application> = {<QApplication> = {<No data fields>}, static staticMetaObject = {d = { superdata = {direct = 0x7f9ce3f11f60 <QApplication::staticMetaObject>}, stringdata = 0x7f9ce502e740 <qt_meta_stringdata_KWin__Application>, data = 0x7f9ce502e5e0 <qt_meta_data_KWin__Application>, static_metacall = 0x7f9ce4ed3d48 <KWin::Application::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static crashes = 0, m_eventFilters = {<QListSpecialMethods<QPointer<KWin::X11EventFilterContainer> >> = {<No data fields>}, {p = { static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f9ce337e1d0 <QListData::shared_null>}, d = 0x7f9ce337e1d0 <QListData::shared_null>}}, m_genericEventFilters = {<QListSpecialMethods<QPointer<KWin::X11EventFilterContainer> >> = {<No data fields>}, {p = { static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f9ce337e1d0 <QListData::shared_null>}, d = 0x7f9ce337e1d0 <QListData::shared_null>}}, m_eventFilter = { d = 0x563036a10640}, m_configLock = false, m_config = {d = 0x563036a1f630}, m_kxkbConfig = {d = 0x563036a58630}, m_operationMode = KWin::Application::OperationModeXwayland, m_x11Time = 0, m_rootWindow = 0, m_connection = 0x0, m_defaultScreen = 0x0, m_useKActivities = true, m_platform = 0x5630369fd750, m_terminating = false, m_isClosingX11Connection = false}, static staticMetaObject = {d = {superdata = { direct = 0x7f9ce50f71e0 <KWin::Application::staticMetaObject>}, stringdata = 0x7f9ce502e5a0 <qt_meta_stringdata_KWin__ApplicationWaylandAbstract>, data = 0x7f9ce502e560 <qt_meta_data_KWin__ApplicationWaylandAbstract>, static_metacall = 0x7f9ce4ed1e5a <KWin::ApplicationWaylandAbstract::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = { direct = 0x7f9ce50f71a0 <KWin::ApplicationWaylandAbstract::staticMetaObject>}, stringdata = 0x56303567f2e0 <qt_meta_stringdata_KWin__ApplicationWayland>, data = 0x56303567f2a0 <qt_meta_data_KWin__ApplicationWayland>, static_metacall = 0x5630355e1616 <KWin::ApplicationWayland::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, m_startXWayland = true, m_applicationsToStart = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, static is_always_lock_free = true}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f9ce337e1d0 <QListData::shared_null>}, d = 0x7f9ce337e1d0 <QListData::shared_null>}}, <No data fields>}, m_inputMethodServerToStart = {static null = {<No data fields>}, d = 0x7f9ce337d720 <QArrayData::shared_null>}, m_environment = {d = {d = 0x5630369db050}}, m_sessionArgument = {static null = {<No data fields>}, d = 0x563036a1f210}, m_xwayland = 0x0, m_xwaylandListenFds = {d = 0x7f9ce337d720 <QArrayData::shared_null>}, m_xwaylandDisplay = {static null = {<No data fields>}, d = 0x7f9ce337d720 <QArrayData::shared_null>}, m_xwaylandXauthority = {static null = {<No data fields>}, d = 0x7f9ce337d720 <QArrayData::shared_null>}, m_settingsWatcher = {value = 0x0, d = 0x0}} availablePlugins = {d = 0x5630369fac90} hasPlugin = {__availablePlugins = @0x7ffe5eda69e8} hasSizeOption = <optimized out> hasOutputCountOption = 88 hasX11Option = true hasVirtualOption = true hasWaylandOption = true hasFramebufferOption = true hasDrmOption = <optimized out> xwaylandOption = {d = {d = 0x563036a1c5c0}} waylandSocketOption = {d = {d = 0x563036a1bf80}} framebufferOption = {d = {d = 0x563036a23030}} framebufferDeviceOption = {d = {d = 0x563036a22ee0}} x11DisplayOption = {d = {d = 0x563036a1bf20}} waylandDisplayOption = {d = {d = 0x563036a22fd0}} virtualFbOption = {d = {d = 0x563036a1f550}} widthOption = {d = {d = 0x563036a1b9a0}} heightOption = {d = {d = 0x563036a1ceb0}} scaleOption = {d = {d = 0x563036a2d430}} outputCountOption = {d = {d = 0x563036a105b0}} waylandSocketFdOption = {d = {d = 0x563036a22e80}} xwaylandListenFdOption = {d = {d = 0x563036a1c320}} xwaylandDisplayOption = {d = {d = 0x5630369e54a0}} xwaylandXAuthorityOption = {d = {d = 0x563036a23240}} replaceOption = {d = {d = 0x563036a232e0}} parser = {d = 0x563036a1c6f0} drmOption = {d = {d = 0x563036a201b0}} inputMethodOption = {d = {d = 0x563036a201f0}} listBackendsOption = {d = {d = 0x563036a20350}} screenLockerOption = {d = {d = 0x563036a203f0}} noScreenLockerOption = {d = {d = 0x563036a20490}} noGlobalShortcutsOption = {d = {d = 0x563036a20590}} noActivitiesOption = {d = {d = 0x563036a206a0}} exitWithSessionOption = {d = {d = 0x563036a1f2e0}} pluginName = {static null = {<No data fields>}, d = 0x563035680b20 <KWin::s_drmPlugin::{lambda()#1}::operator()() const::qstring_literal>} initialWindowSize = {wd = <optimized out>, ht = <optimized out>} deviceIdentifier = {d = 0x7f9ce337d720 <QArrayData::shared_null>} outputCount = <optimized out> outputScale = <optimized out> pluginIt = 0x7ffe5eda6af8 server = <optimized out> flags = {i = 1591372520} socketName = {static null = {<No data fields>}, d = 0x563036a1bdc0} Git commit 47d5d50bdfa81dcbdf6351e563d9c78eb30cfc61 by Xaver Hugl. Committed on 16/11/2021 at 15:16. Pushed by zamundaaa into branch 'master'. backends/drm: don't assume we have a cursor plane M +6 -2 src/backends/drm/drm_pipeline.cpp https://invent.kde.org/plasma/kwin/commit/47d5d50bdfa81dcbdf6351e563d9c78eb30cfc61 Rebuilding Master The commit gets me further, but I still get the above new stack trace A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/1684 That one works, it runs again! Git commit 3e24bc008a1c9b7f38aef15e07902e0d8213b80e by Xaver Hugl. Committed on 22/11/2021 at 08:43. Pushed by zamundaaa into branch 'master'. backends/drm: force soft cursor if image creation fails If the soft cursor is only set but not forced then KWin will try to update cursors again, making it go into code paths that will crash. M +1 -1 src/backends/drm/drm_gpu.cpp https://invent.kde.org/plasma/kwin/commit/3e24bc008a1c9b7f38aef15e07902e0d8213b80e Thanks! |