Bug 421008

Summary: Panel added to the wrong screen after crash
Product: [Plasma] plasmashell Reporter: Edward Kigwana <ekigwana>
Component: generalAssignee: David Edmundson <kde>
Status: RESOLVED UPSTREAM    
Severity: crash CC: plasma-bugs
Priority: NOR Keywords: drkonqi
Version: master   
Target Milestone: 1.0   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Edward Kigwana 2020-05-04 16:08:44 UTC
Application: plasmashell (5.18.80)
 (Compiled from sources)
Qt Version: 5.14.2
Frameworks Version: 5.70.0
Operating System: Linux 5.6.7-gentoo x86_64
Windowing system: Wayland
Distribution: Gentoo/Linux

-- Information about the crash:
- What I was doing when the application crashed:
Use context menu to add default panel to a screen in a multi monitor setup. 

Right click on desktop -> Add Panel -> Default Panel

-What happened:
Seemed to freeze then crashed. When plasma restarts another panel is on whatever plasma decided "the primary display" is. I tried it again on a third screen and got a crash as well.

- Version:
KDE: GIT master from two days ago
QT: 5.14.2

-Other: Crash reporting assistant does not allow adding text to serach for similar bug reports. This is similar to bug 408060 but with a crash now

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Aborted
Content of s_kcrashErrorMessage: (null)
[KCrash Handler]
#6  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#7  0x00007f80a5fcc53b in __GI_abort () at abort.c:79
#8  0x00007f80a64769e7 in qt_message_fatal (context=..., message=<synthetic pointer>...) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/global/qlogging.cpp:1914
#9  QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7ffd28de4310, msg=msg@entry=0x7f80a2212308 "The Wayland connection broke. Did the Wayland compositor die?") at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/global/qlogging.cpp:893
#10 0x00007f80a215b26b in QtWaylandClient::QWaylandDisplay::checkError() const (this=<optimized out>) at /usr/include/qt5/QtCore/qlogging.h:90
#11 QtWaylandClient::QWaylandDisplay::checkError() const (this=<optimized out>) at /var/tmp/portage/dev-qt/qtwayland-5.14.2/work/qtwayland-everywhere-src-5.14.2/src/client/qwaylanddisplay.cpp:191
#12 0x00007f80a216ee9e in QtWaylandClient::QWaylandDisplay::flushRequests() (this=0x55a33b3bb770) at /var/tmp/portage/dev-qt/qtwayland-5.14.2/work/qtwayland-everywhere-src-5.14.2/src/client/qwaylanddisplay.cpp:209
#13 0x00007f80a66c86e8 in doActivate<false>(QObject*, int, void**) (sender=0x55a33b3e4b30, signal_index=3, argv=0x7ffd28de43e0) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#14 0x00007f80a66c253a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55a33b3e4b30, m=m@entry=0x7f80a698f260 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#15 0x00007f80a668df70 in QAbstractEventDispatcher::aboutToBlock() (this=this@entry=0x55a33b3e4b30) at .moc/moc_qabstracteventdispatcher.cpp:144
#16 0x00007f80a66ebc3b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55a33b3e4b30, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qeventdispatcher_glib.cpp:410
#17 0x00007f80a668fc4b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffd28de4500, flags=..., flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/global/qflags.h:136
#18 0x00007f80a6698602 in QCoreApplication::exec() () at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/global/qflags.h:118
#19 0x000055a33a8e5343 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-plasma/plasma-workspace-9999/work/plasma-workspace-9999/shell/main.cpp:222
[Inferior 1 (process 10819) detached]

Possible duplicates by query: bug 420414, bug 419877, bug 419798, bug 419017, bug 418804.

Reported using DrKonqi
Comment 1 Edward Kigwana 2020-05-04 16:14:57 UTC
Not being able to move the panel to another screen (monitor) make Wayland unusable Since I stretch Kdevelop across to monitors
Comment 2 Edward Kigwana 2020-05-04 16:23:07 UTC
I just tried this with X and there is a freeze of about 5 to 10 seconds where I cannot interact with the desktop. Then all panel gets added to "primary display". Plasma does not crash for this case.
Comment 3 Nate Graham 2021-01-13 18:44:53 UTC
#6  QMessageLogger::fatal (this=this@entry=0x7fffd70c5ba0, msg=msg@entry=0x7ff994ac00b8 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:893

This means that the compositor crashed. Due to a Qt issue, when this happens, the app using it will crash too. KDE developers submitted a fix, but sadly it was not merged. See https://codereview.qt-project.org/c/qt/qtwayland/+/308984.

Until we get better handling of this in Qt, the best we can do is debug why the compositor crashed in the first place. So can you please get a backtrace of the crash in kwin_wayland and then file a new bug report with it on kwin | wayland-generic? Thanks!

You may be able to use the `coredumpctl` utility to retrieve the backtrace. See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl