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.

Reply via email to