https://bugs.kde.org/show_bug.cgi?id=526277
Bug ID: 526277
Summary: systemsettings crashes when replacing KWin
Classification: Applications
Product: systemsettings
Version First master
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
STEPS TO REPRODUCE
1. Run systemsettings
2. Run kwin_wayland --replace
OBSERVED RESULT
The Wayland connection broke. Did the Wayland compositor die?
qt.qpa.wayland: Attempting wayland reconnect
qt.qpa.wayland: There are no outputs - creating placeholder screen
=================================================================
==195988==ERROR: AddressSanitizer: heap-use-after-free on address
0x7bd2359959a0 at pc 0x7ba221036af7 bp 0x7ffef1afbdd0 sp 0x7ffef1afbdc8
READ of size 8 at 0x7bd2359959a0 thread T0
#0 0x7ba221036af6 in
QtWaylandClient::QWaylandEglClientBufferIntegration::eglDisplay() const
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/plugins/hardwareintegration/wayland-egl/qwaylandeglclientbufferintegration.cpp:171
#1 0x7ba22103ac67 in
QtWaylandClient::QWaylandEglWindow::invalidateSurface()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/plugins/hardwareintegration/wayland-egl/qwaylandeglwindow.cpp:143
#2 0x7fa2379e8250 in QtWaylandClient::QWaylandWindow::reset()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylandwindow.cpp:339
#3 0x7fa237902a96 in QtWaylandClient::QWaylandDisplay::reconnect()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylanddisplay.cpp:489
#4 0x7fa23790345d in QtWaylandClient::QWaylandDisplay::checkWaylandError()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylanddisplay.cpp:586
#5 0x7fa2379221be in QtPrivate::FunctorCall<std::integer_sequence<unsigned
long>, QtPrivate::List<>, void, void
(QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}::operator()() const
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:128
#6 0x7fa237925366 in void QtPrivate::FunctorCallBase::call_internal<void,
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>,
void, void (QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}>(void**,
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>,
void, void (QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}&&)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:66
#7 0x7fa237925366 in QtPrivate::FunctorCall<std::integer_sequence<unsigned
long>, QtPrivate::List<>, void, void
(QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:127
#8 0x7fa237925469 in void QtPrivate::FunctionPointer<void
(QtWaylandClient::QWaylandDisplay::*)()>::call<QtPrivate::List<>, void>(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:175
#9 0x7fa237925469 in QtPrivate::QCallableObject<void
(QtWaylandClient::QWaylandDisplay::*)(), QtPrivate::List<>, void>::impl(int,
QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:546
#10 0x7fa23af42485 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:462
#11 0x7fa23af42485 in QMetaCallEvent::placeMetaCall(QObject*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:579
#12 0x7fa23af58f94 in QObject::event(QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:1527
#13 0x7fa23e899208 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3269
#14 0x7fa23e8b7ff1 in QApplication::notify(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3219
#15 0x7fa23ae1d92e in QCoreApplication::notifyInternal2(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1128
#16 0x7fa23ae1db1c in QCoreApplication::sendEvent(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1571
#17 0x7fa23ae236ee in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1926
#18 0x7fa23ae23a2f in QCoreApplication::sendPostedEvents(QObject*, int)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1779
#19 0x7fa23b853ba6 in postEventSourceDispatch
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:248
#20 0x7fa2376ffda0 in g_main_dispatch ../glib/gmain.c:3591
#21 0x7fa2376ffda0 in g_main_context_dispatch_unlocked ../glib/gmain.c:4451
#22 0x7fa2377030cf in g_main_context_iterate_unlocked ../glib/gmain.c:4516
#23 0x7fa2377039bf in g_main_context_iteration ../glib/gmain.c:4582
#24 0x7fa23b851fef in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:402
#25 0x7fa23d86cb35 in
QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
/home/nico/workspace/qt6-dev/qtbase/src/gui/platform/unix/qeventdispatcher_glib.cpp:90
#26 0x7fa23ae469a3 in
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventloop.cpp:109
#27 0x7fa23ae47fcf in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventloop.cpp:198
#28 0x7fa23ae2c9a3 in QCoreApplication::exec()
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1469
#29 0x7fa23c6ceedf in QGuiApplication::exec()
/home/nico/workspace/qt6-dev/qtbase/src/gui/kernel/qguiapplication.cpp:2020
#30 0x7fa23e898142 in QApplication::exec()
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:2550
#31 0x000000424331 in main
/home/nico/kde/src/systemsettings/app/main.cpp:182
#32 0x7fa23a22b53d in __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:59
#33 0x7fa23a22b66a in __libc_start_main_impl ../csu/libc-start.c:372
#34 0x000000419394 in _start ../sysdeps/x86_64/start.S:115
0x7bd2359959a0 is located 16 bytes inside of 32-byte region
[0x7bd235995990,0x7bd2359959b0)
freed by thread T0 here:
#0 0x7fa24712dfbf in operator delete(void*, unsigned long)
../../../../libsanitizer/asan/asan_new_delete.cpp:190
#1 0x7ba2210365fd in
QtWaylandClient::QWaylandEglClientBufferIntegration::~QWaylandEglClientBufferIntegration()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/plugins/hardwareintegration/wayland-egl/qwaylandeglclientbufferintegration.cpp:41
#2 0x7fa237996352 in
std::default_delete<QtWaylandClient::QWaylandClientBufferIntegration>::operator()(QtWaylandClient::QWaylandClientBufferIntegration*)
const /usr/include/c++/16/bits/unique_ptr.h:92
#3 0x7fa237996352 in
std::__uniq_ptr_impl<QtWaylandClient::QWaylandClientBufferIntegration,
std::default_delete<QtWaylandClient::QWaylandClientBufferIntegration>
>::reset(QtWaylandClient::QWaylandClientBufferIntegration*)
/usr/include/c++/16/bits/unique_ptr.h:204
#4 0x7fa237996352 in
std::unique_ptr<QtWaylandClient::QWaylandClientBufferIntegration,
std::default_delete<QtWaylandClient::QWaylandClientBufferIntegration>
>::reset(QtWaylandClient::QWaylandClientBufferIntegration*)
/usr/include/c++/16/bits/unique_ptr.h:530
#5 0x7fa237996352 in QtWaylandClient::QWaylandIntegration::reset()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylandintegration.cpp:561
#6 0x7fa23790214d in QtWaylandClient::QWaylandDisplay::reconnect()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylanddisplay.cpp:458
#7 0x7fa23790345d in QtWaylandClient::QWaylandDisplay::checkWaylandError()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylanddisplay.cpp:586
#8 0x7fa2379221be in QtPrivate::FunctorCall<std::integer_sequence<unsigned
long>, QtPrivate::List<>, void, void
(QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}::operator()() const
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:128
#9 0x7fa237925366 in void QtPrivate::FunctorCallBase::call_internal<void,
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>,
void, void (QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}>(void**,
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>,
void, void (QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)::{lambda()#1}&&)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:66
#10 0x7fa237925366 in QtPrivate::FunctorCall<std::integer_sequence<unsigned
long>, QtPrivate::List<>, void, void
(QtWaylandClient::QWaylandDisplay::*)()>::call(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:127
#11 0x7fa237925469 in void QtPrivate::FunctionPointer<void
(QtWaylandClient::QWaylandDisplay::*)()>::call<QtPrivate::List<>, void>(void
(QtWaylandClient::QWaylandDisplay::*)(), QtWaylandClient::QWaylandDisplay*,
void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:175
#12 0x7fa237925469 in QtPrivate::QCallableObject<void
(QtWaylandClient::QWaylandDisplay::*)(), QtPrivate::List<>, void>::impl(int,
QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:546
#13 0x7fa23af42485 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:462
#14 0x7fa23af42485 in QMetaCallEvent::placeMetaCall(QObject*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:579
#15 0x7fa23af58f94 in QObject::event(QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:1527
#16 0x7fa23e899208 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3269
#17 0x7fa23e8b7ff1 in QApplication::notify(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3219
#18 0x7fa23ae1d92e in QCoreApplication::notifyInternal2(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1128
#19 0x7fa23ae1db1c in QCoreApplication::sendEvent(QObject*, QEvent*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1571
#20 0x7fa23ae236ee in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1926
#21 0x7fa23ae23a2f in QCoreApplication::sendPostedEvents(QObject*, int)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1779
#22 0x7fa23b853ba6 in postEventSourceDispatch
/home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:248
#23 0x7fa2376ffda0 in g_main_dispatch ../glib/gmain.c:3591
#24 0x7fa2376ffda0 in g_main_context_dispatch_unlocked ../glib/gmain.c:4451
previously allocated by thread T0 here:
#0 0x7fa24712d0ff in operator new(unsigned long)
../../../../libsanitizer/asan/asan_new_delete.cpp:109
#1 0x7ba221035a6a in
QtWaylandClient::QWaylandEglClientBufferPlugin::create(QString const&,
QList<QString> const&)
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/plugins/hardwareintegration/wayland-egl/main.cpp:22
#2 0x7fa2378d84f2 in QtWaylandClient::QWaylandClientBufferIntegration*
qLoadPlugin<QtWaylandClient::QWaylandClientBufferIntegration,
QtWaylandClient::QWaylandClientBufferIntegrationPlugin, QList<QString>
const&>(QFactoryLoader const*, QString const&, QList<QString> const&)
/home/nico/workspace/qt6-dev/qtbase/src/corelib/plugin/qfactoryloader_p.h:105
#3 0x7fa2378d82f4 in
QtWaylandClient::QWaylandClientBufferIntegrationFactory::create(QString const&,
QList<QString> const&)
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/hardwareintegration/qwaylandclientbufferintegrationfactory.cpp:26
#4 0x7fa237998742 in
QtWaylandClient::QWaylandIntegration::initializeClientBufferIntegration()
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylandintegration.cpp:383
#5 0x7fa237999310 in
QtWaylandClient::QWaylandIntegration::clientBufferIntegration() const
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylandintegration.cpp:329
#6 0x7fa2378f63b5 in
QtWaylandClient::QWaylandDisplay::clientBufferIntegration() const
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylanddisplay.cpp:323
#7 0x7fa23799568f in
QtWaylandClient::QWaylandIntegration::createPlatformWindow(QWindow*) const
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/qwaylandintegration.cpp:147
#8 0x7fa23c876b31 in QWindowPrivate::create(bool)
/home/nico/workspace/qt6-dev/qtbase/src/gui/kernel/qwindow.cpp:577
#9 0x7fa23c877523 in QWindow::create()
/home/nico/workspace/qt6-dev/qtbase/src/gui/kernel/qwindow.cpp:739
#10 0x7fa23e9e312d in QWidgetPrivate::create()
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qwidget.cpp:1324
#11 0x7fa23e9e4479 in QWidget::create(unsigned long long, bool, bool)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qwidget.cpp:1166
#12 0x7fa23ea0e16d in QWidgetPrivate::setVisible(bool)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qwidget.cpp:8352
#13 0x7fa23e9e7974 in QWidget::setVisible(bool)
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qwidget.cpp:8329
#14 0x7fa23ea0334b in QWidget::show()
/home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qwidget.cpp:7946
#15 0x00000044a8b1 in SettingsBase::loadCurrentView()
/home/nico/kde/src/systemsettings/app/SettingsBase.cpp:308
#16 0x0000004454ca in SettingsBase::initApplication()
/home/nico/kde/src/systemsettings/app/SettingsBase.cpp:115
#17 0x00000044401f in
SettingsBase::SettingsBase(SidebarMode::ApplicationMode, QString const&,
QList<QString> const&, QWidget*)
/home/nico/kde/src/systemsettings/app/SettingsBase.cpp:64
#18 0x000000424246 in main
/home/nico/kde/src/systemsettings/app/main.cpp:154
#19 0x7fa23a22b53d in __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:59
SUMMARY: AddressSanitizer: heap-use-after-free
/home/nico/workspace/qt6-dev/qtbase/src/plugins/platforms/wayland/plugins/hardwareintegration/wayland-egl/qwaylandeglclientbufferintegration.cpp:171
in QtWaylandClient::QWaylandEglClientBufferIntegration::eglDisplay() const
Shadow bytes around the buggy address:
0x7bd235995700: 00 04 fa fa 00 00 00 02 fa fa fd fd fd fa fa fa
0x7bd235995780: fd fd fd fd fa fa 00 00 00 04 fa fa 00 00 00 fa
0x7bd235995800: fa fa 00 00 00 00 fa fa fd fd fd fa fa fa 00 00
0x7bd235995880: 00 02 fa fa fd fd fd fd fa fa fd fd fd fa fa fa
0x7bd235995900: fd fd fd fd fa fa 00 00 00 00 fa fa 00 00 00 06
=>0x7bd235995980: fa fa fd fd[fd]fd fa fa 00 00 00 02 fa fa fd fd
0x7bd235995a00: fd fd fa fa 00 00 00 00 fa fa 00 00 00 02 fa fa
0x7bd235995a80: 00 00 00 00 fa fa fd fd fd fd fa fa 00 00 00 02
0x7bd235995b00: fa fa fd fd fd fa fa fa fd fd fd fd fa fa 00 00
0x7bd235995b80: 00 04 fa fa fd fd fd fd fa fa 00 00 00 00 fa fa
0x7bd235995c00: fd fd fd fd fa fa 00 00 00 02 fa fa 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==195988==ABORTING
SOFTWARE/OS VERSIONS
KDE Plasma Version: master
KDE Frameworks Version: master
Qt Version: dev
ADDITIONAL INFORMATION
--
You are receiving this mail because:
You are watching all bug changes.