Bug 473927

Summary: plasmashell crashed when clicking Properties on a Firefox icon with an environment variable in its Program field
Product: [Plasma] plasmashell Reporter: Matt Fagnani <matt.fagnani>
Component: generic-crashAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED DUPLICATE    
Severity: crash CC: nate
Priority: NOR    
Version: 5.27.7   
Target Milestone: 1.0   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: full trace of all threads of plasmashell crash

Description Matt Fagnani 2023-08-30 03:18:33 UTC
SUMMARY

I'm running Plasma 5.27.7 on Wayland in a Fedora 39 KDE Plasma installation. I created a new icon for the upstream Firefox 117.0 by right-clicking on the desktop filling in the names, icon, and the program path. When I clicked on the new icon, FIrefox started on XWayland. I right-clicked on the Firefox icon, selected Properties, and added MOZ_ENABLE_WAYLAND=1 to the Program field. When I clicked on the Firefox icon again, Firefox didn't start. I right-clicked on the Firefox icon, and selected Properties. plasmashell crashed and the screen went black for a second or so before it restarted. The journal showed errors like the following.

Aug 29 22:35:40 plasmashell[11346]: Cannot initialize model with data QJsonObject(). missing: QJsonValue(string, "urls")
Aug 29 22:35:50 kioslave5[11374]: QObject::connect: No such slot DesktopProtocol::_k_slotRedirection(KIO::Job *, QUrl)
Aug 29 22:35:50 plasmashell[11346]: KCrash: Application 'plasmashell' crashing...
Aug 29 22:35:50 plasmashell[11346]: KCrash: Attempting to start /usr/libexec/drkonqi
Aug 29 22:35:50 drkonqi[11429]: kf5idletime_wayland: This plugin does not support polling idle time
Aug 29 22:35:51 systemd[8974]: plasma-plasmashell.service: Main process exited, code=exited, status=253/n/a
Aug 29 22:35:51 systemd[8974]: plasma-plasmashell.service: Failed with result 'exit-code'.
Aug 29 22:35:51 systemd[8974]: plasma-plasmashell.service: Consumed 8.740s CPU time.
Aug 29 22:35:51 systemd[8974]: plasma-plasmashell.service: Scheduled restart job, restart counter is at 3.
Aug 29 22:35:51 systemd[8974]: Starting plasma-plasmashell.service - KDE Plasma Workspace...
Aug 29 22:35:52 systemd[8974]: Started plasma-plasmashell.service - KDE Plasma Workspace.

drkonqi tried to start but didn't appear. No core dumps were shown in coredumpctl or the journal. This type of crash has happened each of several times I've tried to click on Properties with MOZ_ENABLE_WAYLAND=1 to the Program field. I knew but forgot that MOZ_ENABLE_WAYLAND=1 should be added to the Enviroment Variables field in Properties. 

STEPS TO REPRODUCE
1. Boot a Fedora 39 KDE Plasma installation updated to 2023-8-29 with the updates-testing repo enabled
2. Log in to Plasma on Wayland
3. Right-click on the desktop background
4. Click Create New in the context menu
5. Click Link to Application
6. Select the Application tab
7. Enter MOZ_ENABLE_WAYLAND=1 firefox in the Program field
8. Select OK
9. Right-click on the new Firefox icon
10. Select Properties

I was using the upstream Firefox 117.0 which can be downloaded from https://www.mozilla.org/en-US/firefox/all/#product-desktop-release You can try using that instead if making a new icon for the Fedora firefox doesn't lead to the crash.

OBSERVED RESULT
plasmashell crashed when clicking Properties on a Firefox icon with an enviroment variable its the Program field

EXPECTED RESULT
plasmashell wouldn't crash. The Properties of the icon would be shown.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Fedora 39
(available in About System)
KDE Plasma Version: 5.27.7
KDE Frameworks Version: 5.109.0
Qt Version: 5.15.10

ADDITIONAL INFORMATION
Comment 1 Matt Fagnani 2023-08-30 04:43:50 UTC
Created attachment 161276 [details]
full trace of all threads of plasmashell crash

I attached gdb to plasmashell with gdb -p $(pidof plasmashell) in Konsole. I ran c to continue in gdb and reproduced the crash with Fedora's firefox in the Program field in Properties as described. The trace of the crashing thread was as follows. The full trace of all threads is attached.

Core was generated by `/usr/bin/plasmashell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f2383d0d9d4 in QWidgetLineControl::internalSetText (this=0x55f841b4a920, txt=..., 
    pos=pos@entry=-1, edited=edited@entry=false) at widgets/qwidgetlinecontrol.cpp:766
766             m_text = txt.isEmpty() ? txt : txt.left(m_maxLength);
[Current thread is 1 (Thread 0x7f2384fb8600 (LWP 13663))]

(gdb) bt
#0  0x00007f2383d0d9d4 in QWidgetLineControl::internalSetText(QString const&, int, bool)
    (this=0x55f841b4a920, txt=..., pos=pos@entry=-1, edited=edited@entry=false)
    at widgets/qwidgetlinecontrol.cpp:766
#1  0x00007f2383cffd1f in QWidgetLineControl::setText(QString const&) (txt=..., this=<optimized out>)
    at ../../include/QtWidgets/5.15.10/QtWidgets/private/../../../../../src/widgets/widgets/qwidgetlinecontrol_p.h:251
#2  0x00007f2383d043ad in QLineEdit::setText(QString const&)
    (this=this@entry=0x55f841b4a8e0, text=...) at widgets/qlineedit.cpp:317
#3  0x00007f238208dc00 in KDEPrivate::KDesktopPropsPlugin::KDesktopPropsPlugin(KPropertiesDialog*)
    (this=<optimized out>, _props=<optimized out>, this=<optimized out>, _props=<optimized out>)
    at /usr/include/qt5/QtCore/qlist.h:245
#4  0x00007f2382079a7f in KPropertiesDialogPrivate::insertPages() (this=this@entry=0x55f8435dca30)
    at /usr/src/debug/kf5-kio-5.109.0-3.fc39.x86_64/src/widgets/kpropertiesdialog.cpp:641
#5  0x00007f238207c17c in KPropertiesDialogPrivate::init() (this=0x55f8435dca30)
    at /usr/src/debug/kf5-kio-5.109.0-3.fc39.x86_64/src/widgets/kpropertiesdialog.cpp:436
#6  0x00007f238207c4d3 in KPropertiesDialog::showDialog(KFileItem const&, QWidget*, bool)
    (item=..., parent=parent@entry=0x0, modal=false, modal@entry=236)
    at /usr/src/debug/kf5-kio-5.109.0-3.fc39.x86_64/src/widgets/kpropertiesdialog.cpp:373
#7  0x00007f238207cde7 in KPropertiesDialog::showDialog(KFileItemList const&, QWidget*, bool)
    (_items=..., parent=parent@entry=0x0, modal=modal@entry=false)
    at /usr/src/debug/kf5-kio-5.109.0-3.fc39.x86_64/src/widgets/kpropertiesdialog.cpp:409
#8  0x00007f2328569edd in FolderModel::openPropertiesDialog() (this=<optimized out>)
    at /usr/src/debug/plasma-desktop-5.27.7.1-1.fc39.x86_64/containments/desktop/plugins/folder/folder--Type <RET> for more, q to quit, c to continue without paging--c
model.cpp:1919
#9  0x00007f2382ee84f1 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffc75524e90, r=<optimized out>, this=0x55f8419bad70)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#10 doActivate<false>(QObject*, int, void**)
    (sender=0x55f842de7cd0, signal_index=4, argv=0x7ffc75524e90) at kernel/qobject.cpp:3925
#11 0x00007f2382ee3417 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x55f842de7cd0, m=m@entry=0x7f23840cf1c0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffc75524e90) at kernel/qobject.cpp:3985
#12 0x00007f2383ba7d24 in QAction::triggered(bool)
    (this=this@entry=0x55f842de7cd0, _t1=<optimized out>) at .moc/moc_qaction.cpp:376
#13 0x00007f2383baab7b in QAction::activate(QAction::ActionEvent)
    (this=0x55f842de7cd0, event=<optimized out>) at kernel/qaction.cpp:1161
#14 0x00007f2383d3f432 in QMenuPrivate::activateCausedStack(QVector<QPointer<QWidget> > const&, QAction*, QAction::ActionEvent, bool)
    (this=this@entry=0x55f843e95130, causedStack=..., action=action@entry=0x55f842de7cd0, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1384
#15 0x00007f2383d473c2 in QMenuPrivate::activateAction(QAction*, QAction::ActionEvent, bool)
    (this=0x55f843e95130, action=0x55f842de7cd0, action_e=QAction::Trigger, self=true)
    at widgets/qmenu.cpp:1461
#16 0x00007f2383bf3688 in QWidget::event(QEvent*) (this=0x55f84437a320, event=0x7ffc755254d0)
    at kernel/qwidget.cpp:9045
#17 0x00007f2383baeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=this@entry=0x55f840b57c70, receiver=receiver@entry=0x55f84437a320, e=e@entry=0x7ffc755254d0) at kernel/qapplication.cpp:3640
#18 0x00007f2383bb7456 in QApplication::notify(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x55f84437a320, e=0x7ffc755254d0) at kernel/qapplication.cpp:3084
#19 0x00007f2382eb4218 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x55f84437a320, event=0x7ffc755254d0) at kernel/qcoreapplication.cpp:1064
#20 0x00007f2382eb4452 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*)
    (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474
#21 0x00007f2383bb56a4 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
    (receiver=0x55f84437a320, event=event@entry=0x7ffc755254d0, alienWidget=<optimized out>, nativeWidget=0x55f84437a320, buttonDown=buttonDown@entry=0x7f2384107330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622
#22 0x00007f2383c0dd42 in QWidgetWindow::handleMouseEvent(QMouseEvent*)
    (this=this@entry=0x55f84167fd90, event=event@entry=0x7ffc755257b0)
    at kernel/qwidgetwindow.cpp:580
#23 0x00007f2383c1072f in QWidgetWindow::event(QEvent*) (this=0x55f84167fd90, event=0x7ffc755257b0)
    at kernel/qwidgetwindow.cpp:300
#24 0x00007f2383baeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x55f84167fd90, e=0x7ffc755257b0) at kernel/qapplication.cpp:3640
#25 0x00007f2382eb4218 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x55f84167fd90, event=0x7ffc755257b0) at kernel/qcoreapplication.cpp:1064
#26 0x00007f2382eb4452 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*)
    (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474
#27 0x00007f238336cc2b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x7f2360009430) at kernel/qguiapplication.cpp:2278
#28 0x00007f238334acbc in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...) at kernel/qwindowsysteminterface.cpp:1169
#29 0x00007f238435fa74 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) ()
    at /lib64/libQt5WaylandClient.so.5
#30 0x00007f238199eeec in g_main_dispatch (context=0x7f2368000ec0) at ../glib/gmain.c:3476
#31 g_main_context_dispatch_unlocked (context=0x7f2368000ec0) at ../glib/gmain.c:4284
#32 0x00007f23819f9968 in g_main_context_iterate_unlocked.isra.0
    (context=context@entry=0x7f2368000ec0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4349
#33 0x00007f238199cb63 in g_main_context_iteration (context=0x7f2368000ec0, may_block=1)
    at ../glib/gmain.c:4414
#34 0x00007f2382f06759 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=0x55f840b78c20, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#35 0x00007f2382eb2bdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffc75525b60, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#36 0x00007f2382ebae6b in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#37 0x00007f2383360e9d in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1863
#38 0x00007f2383baeae9 in QApplication::exec() () at kernel/qapplication.cpp:2832
#39 0x000055f84065660a in main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at /usr/src/debug/plasma-workspace-5.27.7-1.fc39.x86_64/shell/main.cpp:235
Comment 2 Nate Graham 2023-08-30 20:09:00 UTC

*** This bug has been marked as a duplicate of bug 465290 ***