https://bugs.kde.org/show_bug.cgi?id=467297
Bug ID: 467297 Summary: kwin_wayland crashes when adding sufficient many (horizontally tiled) tiles Classification: Plasma Product: kwin Version: 5.27.2 Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: Custom Tiling Assignee: kwin-bugs-n...@kde.org Reporter: pos...@posteo.eu CC: notm...@gmail.com Target Milestone: --- STEPS TO REPRODUCE 1. Open the tiling editor (Meta + T) 2. Keep tiling horizontally (10-20 times) 3. Try to interact with those tiles OBSERVED RESULT The system freezes and finally kwin_wayland crashes and recovers itself. All apps etc. are terminated however. This issue can be reproduced always. ``` (gdb) bt full #0 0x00007f2992088bc6 in QQuickItem::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qquickitem.cpp:931 _t = <optimized out> _v = 0x7f293cebfef0 #1 0x00007f2992089953 in QQuickItem::qt_metacall(QMetaObject::Call, int, void**) (this=this@entry=0x55a0cdec2ba0, _c=_c@entry=QMetaObject::ReadProperty, _id=12, _a=_a@entry=0x7fff94314230) at .moc/moc_qquickitem.cpp:1048 #2 0x00007f295a395045 in QQuickLayout::qt_metacall(QMetaObject::Call, int, void**) (this=this@entry=0x55a0cdec2ba0, _c=_c@entry=QMetaObject::ReadProperty, _id=<optimized out>, _a=_a@entry=0x7fff94314230) at .moc/moc_qquicklayout_p.cpp:132 #3 0x00007f295a38de05 in QQuickGridLayoutBase::qt_metacall(QMetaObject::Call, int, void**) (this=this@entry=0x55a0cdec2ba0, _c=_c@entry=QMetaObject::ReadProperty, _id=<optimized out>, _a=_a@entry=0x7fff94314230) at .moc/moc_qquicklinearlayout_p.cpp:158 #4 0x00007f295a38dea5 in QQuickGridLayout::qt_metacall(QMetaObject::Call, int, void**) (this=0x55a0cdec2ba0, _c=QMetaObject::ReadProperty, _id=<optimized out>, _a=0x7fff94314230) at .moc/moc_qquicklinearlayout_p.cpp:394 #5 0x00007f2991b05b34 in QV4::QmlListWrapper::create(QV4::ExecutionEngine*, QObject*, int, int) (engine=0x55a0c7dce9e0, object=0x55a0cdec2ba0, propId=13, propType=1324) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.8+kde22/src/qml/qml/qqmllistwrapper.cpp:80 scope = {engine = 0x55a0c7dce9e0, mark = 0x7f293d0276d8} r = {ptr = 0x7f293d0276d8} args = {0x7f293cebfef0, 0x0} #6 0x00007f29919b8499 in loadProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData const&) (v4=0x55a0c7dce9e0, object=0x55a0cdec2ba0, property=...) at ../../include/QtQml/5.15.8/QtQml/private/../../../../../../src/qml/qml/qqmlpropertydata_p.h:284 scope = {engine = 0x55a0c7dce9e0, mark = 0x7f293d0276d8} #7 0x00007f2991995ff6 in QV4::QObjectWrapper::lookupGetterImpl<QV4::QQmlContextWrapper::lookupScopeObjectProperty(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value*)::<lambda()> > (useOriginalProperty=true, revertLookup=..., object=<optimized out>, engine=0x55a0c7dce9e0, lookup=0x55a0c7dad1a0) at ../../include/QtQml/5.15.8/QtQml/private/../../../../../../src/qml/jsruntime/qv4qobjectwrapper_p.h:262 o = <optimized out> This = <optimized out> qobj = <optimized out> ddata = <optimized out> property = <optimized out> scope = {engine = 0x55a0c7dce9e0, mark = 0x7f293d0276c8} qmlContext = {ptr = <optimized out>} scopeObject = <optimized out> revertLookup = {__l = <optimized out>, __engine = <optimized out>, __base = <optimized out>} obj = {ptr = <optimized out>} #8 QV4::QQmlContextWrapper::lookupScopeObjectProperty(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value*) (l=0x55a0c7dad1a0, engine=0x55a0c7dce9e0, base=0x0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.8+kde22/src/qml/jsruntime/qv4qmlcontext.cpp:562 scope = {engine = 0x55a0c7dce9e0, mark = 0x7f293d0276c8} qmlContext = {ptr = <optimized out>} scopeObject = <optimized out> revertLookup = {__l = <optimized out>, __engine = <optimized out>, __base = <optimized out>} obj = {ptr = <optimized out>} #9 0x00007f2946459a27 in () #10 0x0000000000000000 in () ``` ``` list 926 case 7: *reinterpret_cast< qreal*>(_v) = _t->width(); break; 927 case 8: *reinterpret_cast< qreal*>(_v) = _t->height(); break; 928 case 9: *reinterpret_cast< qreal*>(_v) = _t->opacity(); break; 929 case 10: *reinterpret_cast< bool*>(_v) = _t->isEnabled(); break; 930 case 11: *reinterpret_cast< bool*>(_v) = _t->isVisible(); break; 931 case 12: *reinterpret_cast< QQmlListProperty<QQuickItem>*>(_v) = _t->QQuickItem::d_func()->visibleChildren(); break; 932 case 13: *reinterpret_cast< QQmlListProperty<QQuickState>*>(_v) = _t->QQuickItem::d_func()->states(); break; 933 case 14: *reinterpret_cast< QQmlListProperty<QQuickTransition>*>(_v) = _t->QQuickItem::d_func()->transitions(); break; 934 case 15: *reinterpret_cast< QString*>(_v) = _t->state(); break; 935 case 16: *reinterpret_cast< QRectF*>(_v) = _t->childrenRect(); break; ``` EXPECTED RESULT 1. Cap the maximum number of tiles to some sane value :) 2. Don't crash SOFTWARE/OS VERSIONS Operating System: openSUSE Tumbleweed 20230312 KDE Plasma Version: 5.27.2 KDE Frameworks Version: 5.104.0 Qt Version: 5.15.8 Kernel Version: 6.2.2-1-default (64-bit) Graphics Platform: Wayland Graphics Processor: AMD Radeon RX 580 Series -- You are receiving this mail because: You are watching all bug changes.