You are not logged in.

#1 2020-09-28 22:05:20

jghodd
Member
From: Jetersville, VA
Registered: 2019-07-14
Posts: 54

plasmashell: flexible panel spacers cause desktop to crash

It took a while to narrow this issue down since I run the exact same javascript layout code on both my 64-bit and 32-bit platforms. Initially, all I could see was that that the 64-bit plasma desktop worked fine, but always crashed in my arch32 32-bit environment. Making matters worse, was that my 32-bit platform is headless, so it was easy to blame the problem on VNC or VirtualBox. Several days ago I looked more closely and noted that the desktop appeared briefly before disappearing, so I started the task of narrowing down where exactly the problem was. Turns out, it's flexible panel spacers. Static panel spacers work fine, flexible ones do not. It doesn;t matter if it's implemented programmatically or if its state is changed directly (right-click on panel, change to flexible). Both cause plasma to crash - specifically, libQt5Qml segfaults. I've tried a full local rebuild of qt5-declarative, but the issue persists. I've tested in with vnc, virtualbox and on a netbook - this happens on all platforms.

Sep 28 20:55:06 bluestar32 kernel: plasmashell[1091]: segfault at 14 ip b71d1060 sp bf86ad00 error 4 in libQt5Qml.so.5.15.1[b70d6000+2c9000]

This javascript works:

panelSpacer = panel.addWidget("org.kde.plasma.panelspacer");
panelSpacer.writeConfig("expanding", "false");
panelSpacer.writeConfig("length", 32);

This does not:

panelSpacer = panel.addWidget("org.kde.plasma.panelspacer");

Nor does this:

panelSpacer = panel.addWidget("org.kde.plasma.panelspacer");
panelSpacer.writeConfig("expanding", "true");

I'll reiterate that 64-bit archlinux has no issue with this, despite running the exact same version of qt5-declarative (5.15.1-1). This is an archlinux32 issue. I should also add that at one point in time, this was working in arch32. It's been a while, so I can't pin down when exactly it changed. Definitely a few months. So this bug was introduced fairly recently.

Has anyone else run into this? And/or can anyone suggest a workaround?

Last edited by jghodd (2020-09-28 22:08:15)

Offline

#2 2020-09-29 04:31:53

jghodd
Member
From: Jetersville, VA
Registered: 2019-07-14
Posts: 54

Re: plasmashell: flexible panel spacers cause desktop to crash

Here's the full backtrace:

Application: Plasma (plasmashell), signal: Segmentation fault

[KCrash Handler]
#5  0xb71ca060 in QV4::QObjectWrapper::getProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*) () at /usr/lib/libQt5Qml.so.5
#6  0xb71cba2f in QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const*, QV4::ExecutionEngine*, QV4::Lookup*) () at /usr/lib/libQt5Qml.so.5
#7  0xb71eabb7 in  () at /usr/lib/libQt5Qml.so.5
#8  0xb71ef165 in  () at /usr/lib/libQt5Qml.so.5
#9  0xb7183fff in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () at /usr/lib/libQt5Qml.so.5
#10 0xb730258d in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () at /usr/lib/libQt5Qml.so.5
#11 0xb7307b3d in QQmlBinding::evaluate(bool*) () at /usr/lib/libQt5Qml.so.5
#12 0xb730baab in  () at /usr/lib/libQt5Qml.so.5
#13 0xb7309822 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () at /usr/lib/libQt5Qml.so.5
#14 0xb7309979 in QQmlBinding::refresh() () at /usr/lib/libQt5Qml.so.5
#15 0xb72e3a2e in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () at /usr/lib/libQt5Qml.so.5
#16 0xb5a81eb6 in  () at /usr/lib/libQt5Core.so.5
#17 0xb5a7b53f in QMetaObject::activate(QObject*, int, void**) () at /usr/lib/libQt5Core.so.5
#18 0xb72710b8 in QQmlOpenMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) () at /usr/lib/libQt5Qml.so.5
#19 0xb5a52ff1 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () at /usr/lib/libQt5Core.so.5
#20 0xb729f2e0 in QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyData::WriteFlag>) () at /usr/lib/libQt5Qml.so.5
#21 0xb71d01cc in QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData*, QV4::Value const&) () at /usr/lib/libQt5Qml.so.5
#22 0xb71d0956 in QV4::QObjectWrapper::setQmlProperty(QV4::ExecutionEngine*, QQmlContextData*, QObject*, QV4::String*, QV4::QObjectWrapper::RevisionMode, QV4::Value const&) () at /usr/lib/libQt5Qml.so.5
#23 0xb71d0adc in QV4::QObjectWrapper::virtualPut(QV4::Managed*, QV4::PropertyKey, QV4::Value const&, QV4::Value*) () at /usr/lib/libQt5Qml.so.5
#24 0xb7198b16 in QV4::Object::virtualResolveLookupSetter(QV4::Object*, QV4::ExecutionEngine*, QV4::Lookup*, QV4::Value const&) () at /usr/lib/libQt5Qml.so.5
#25 0xb71eac42 in  () at /usr/lib/libQt5Qml.so.5
#26 0xb71ef165 in  () at /usr/lib/libQt5Qml.so.5
#27 0xb7184fe0 in  () at /usr/lib/libQt5Qml.so.5
#28 0xb728cec0 in QQmlVMEMetaObject::metaCall(QObject*, QMetaObject::Call, int, void**) () at /usr/lib/libQt5Qml.so.5
#29 0xb5a52ff1 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () at /usr/lib/libQt5Core.so.5
#30 0xb5a58ea2 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () at /usr/lib/libQt5Core.so.5
#31 0xb5a5a6e7 in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) () at /usr/lib/libQt5Core.so.5
#32 0xa322ef03 in  () at /usr/lib/qt/plugins/plasma/scriptengines/plasma_appletscript_declarative.so
#33 0xb5a82296 in  () at /usr/lib/libQt5Core.so.5
#34 0xb65bf109 in QAction::triggered(bool) () at /usr/lib/libQt5Widgets.so.5
#35 0xb65c1d0e in QAction::activate(QAction::ActionEvent) () at /usr/lib/libQt5Widgets.so.5
#36 0xb6761f11 in  () at /usr/lib/libQt5Widgets.so.5
#37 0xb6769e16 in  () at /usr/lib/libQt5Widgets.so.5
#38 0xb676b490 in QMenu::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/libQt5Widgets.so.5
#39 0xb660cedf in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#40 0xb65c6039 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#41 0xb65cd811 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#42 0xb5a4996a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#43 0xb65cc7a5 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#44 0xb6628080 in  () at /usr/lib/libQt5Widgets.so.5
#45 0xb662af08 in  () at /usr/lib/libQt5Widgets.so.5
#46 0xb65c6039 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#47 0xb5a4996a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#48 0xb5e1859e in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt5Gui.so.5
#49 0xb5de824d in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Gui.so.5
#50 0xb12ca4dd in  () at /usr/lib/libQt5XcbQpa.so.5
#51 0xb3f40bfe in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#52 0xb3f8f842 in  () at /usr/lib/libglib-2.0.so.0
#53 0xb3f3f986 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#54 0xb5aa5c64 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#55 0xb5a4803e in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#56 0xb5a50dab in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#57 0x004d0075 in  ()
#58 0xb545500e in __libc_start_main () at /usr/lib/libc.so.6
#59 0x004d02a5 in _start ()
[Inferior 1 (process 784) detached]

Offline

Board footer

Powered by FluxBB