https://bugs.kde.org/show_bug.cgi?id=390314
Bug ID: 390314 Summary: kwin_wayland SIGSEGV in KWin::WaylandCursorTheme::loadTheme Product: kwin Version: 5.12.0 Platform: openSUSE RPMs OS: Linux Status: UNCONFIRMED Severity: normal Priority: NOR Component: platform-wayland Assignee: kwin-bugs-n...@kde.org Reporter: schrott3...@yahoo.de Target Milestone: --- Flags: Wayland+, X11- Created attachment 110557 --> https://bugs.kde.org/attachment.cgi?id=110557&action=edit Detailed gdb backtrace Symptoms: kwin_wayland session crashes when moving the cursor e.g. over another window. Cause: There is an endless recursion when calling KWin::CursorImage::loadThemeCursor. I will describe the scheme in short for details see the attached backtrace: step1: Kwin calls KWin::CursorImage::loadThemeCursor step2: Which then calls KWin::WaylandCursorTheme::get which call KWin::WaylandCursorTheme::loadTheme step3: KWin::WaylandCursorTheme::loadTheme emits the event themeChanged() (wayland_cursor_theme.cpp, line:70) step4: This is handled by the lambda expession at pointer_input.cpp line 908, which calls KWin::CursorImage::loadThemeCursor in line 911 which starts the whole thing again (=> goto step1) This cycle breaks in the moment when malloc fails to allocate and kwin crashes with a segmentation fault: Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f35190c0919 in malloc () from /lib64/libc.so.6 #0 0x00007f35190c0919 in malloc () from /lib64/libc.so.6 No symbol table info available. #1 0x00007f351948d718 in operator new(unsigned long) () from /usr/lib64/libstdc++.so.6 No symbol table info available. #2 0x00007f3519c63f0d in QObjectPrivate::connectImpl(QObject const*, int, QObject const*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, int const*, QMetaObject const*) () from /usr/lib64/libQt5Core.so.5 No symbol table info available. #3 0x00007f3519c64295 in QObject::connectImpl(QObject const*, void**, QObject const*, void**, QtPrivate::QSlotObjectBase*, Qt::ConnectionType, int const*, QMetaObject const*) () from /usr/lib64/libQt5Core.so.5 No symbol table info available. #4 0x00007f351bfcbded in QObject::connect<void (KWin::Cursor::*)(), void (KWin::WaylandCursorTheme::*)()> (type=Qt::AutoConnection, slot=(void (KWin::WaylandCursorTheme::*)(KWin::WaylandCursorTheme * const)) 0x7f351bfcbc70 <KWin::WaylandCursorTheme::loadTheme()>, receiver=0x563d373dfee0, signal=(void (KWin::Cursor::*)(KWin::Cursor * const)) 0x7f351c015600 <KWin::Cursor::themeChanged()>, sender=0x563d36a12350) at /usr/include/qt5/QtCore/qobject.h:259 types = 0x0 #5 KWin::WaylandCursorTheme::loadTheme (this=0x563d373dfee0) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/wayland_cursor_theme.cpp:55 size = <optimized out> this = 0x563d373dfee0 #6 0x00007f351bfcc0d0 in KWin::WaylandCursorTheme::get (this=this@entry=0x563d373dfee0, name=...) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/wayland_cursor_theme.cpp:90 c = <optimized out> #7 0x00007f351bfcc13d in KWin::WaylandCursorTheme::get (this=0x563d373dfee0, shape=<optimized out>) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/wayland_cursor_theme.cpp:84 No locals. #8 0x00007f351bedbd7c in KWin::CursorImage::loadThemeCursor<Qt::CursorShape> (this=0x563d37581b20, shape=shape@entry=@0x7ffd4e791354: Qt::ArrowCursor, cursors=..., image=0x563d37581bd0) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/pointer_input.cpp:1194 cursor = <optimized out> b = <optimized out> buffer = <optimized out> it = {i = 0x7f3519cdc360 <QHashData::shared_null>} #9 0x00007f351beda40d in KWin::CursorImage::loadThemeCursor (image=<optimized out>, shape=<optimized out>, this=<optimized out>) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/pointer_input.cpp:1175 No locals. #10 KWin::CursorImage::<lambda()>::operator() (__closure=0x563d374e45c0) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/pointer_input.cpp:911 this = 0x563d37581b20 #11 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::CursorImage::CursorImage(KWin::PointerInputRedirection*)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:130 No locals. #12 QtPrivate::Functor<KWin::CursorImage::CursorImage(KWin::PointerInputRedirection*)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:240 No locals. #13 QtPrivate::QFunctorSlotObject<KWin::CursorImage::CursorImage(KWin::PointerInputRedirection*)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x563d374e45b0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:423 No locals. #14 0x00007f3519c600cc in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 No symbol table info available. #15 0x00007f351bfcbd5f in KWin::WaylandCursorTheme::loadTheme (this=0x563d373dfee0) at /usr/src/debug/kwin5-5.12.0-1.1.x86_64/wayland_cursor_theme.cpp:70 size = -2147483648 this = 0x563d373dfee0 ---- stripped here see attached log for detailed backtrace ----- Workaround: Setting kcminputrc_mouse_cursorsize='' in startupconfig prevents triggering this bug (NOTE: it was originally set to 0 in my account). Please note that the attached backtrace does not show the full backtrace, hte parts in the middle are just the same over and over again. -- You are receiving this mail because: You are watching all bug changes.