D7359: Send output enter/leave events to surfaces

Martin Flöser noreply at phabricator.kde.org
Thu Aug 24 19:10:53 UTC 2017


graesslin added a comment.


  ASAN detected a heap-use-after-free:
  
    =================================================================
    ==10094==ERROR: AddressSanitizer: heap-use-after-free on address 0x60300003b060 at pc 0x7fa28cc7782f bp 0x7fff015a5610 sp 0x7fff015a5608
    READ of size 8 at 0x60300003b060 thread T0
        #0 0x7fa28cc7782e in QScopedPointer<KWayland::Server::Global::Private, QScopedPointerDeleter<KWayland::Server::Global::Private> >::data() const /usr/include/qt5/QtCore/qscopedpointer.h:140
        #1 0x7fa28cc8bcbb in KWayland::Server::OutputInterface::d_func() const /home/jenkins/workspace/Dependency Build Plasma kf5-qt5 SUSEQt5.9/kwayland/src/server/output_interface.cpp:528
        #2 0x7fa28cc8b96a in KWayland::Server::OutputInterface::clientResources(KWayland::Server::ClientConnection*) const /home/jenkins/workspace/Dependency Build Plasma kf5-qt5 SUSEQt5.9/kwayland/src/server/output_interface.cpp:511
        #3 0x7fa28cd9a61f in KWayland::Server::SurfaceInterface::setOutputs(QVector<KWayland::Server::OutputInterface*> const&) /home/jenkins/workspace/Dependency Build Plasma kf5-qt5 SUSEQt5.9/kwayland/src/server/surface_interface.cpp:792
        #4 0x7fa299ea0c9e in KWin::ShellClient::updateClientOutputs() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/shell_client.cpp:1540
        #5 0x7fa299eb54e4 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::ShellClient::*)()>::call(void (KWin::ShellClient::*)(), KWin::ShellClient*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:136
        #6 0x7fa299eb3844 in void QtPrivate::FunctionPointer<void (KWin::ShellClient::*)()>::call<QtPrivate::List<>, void>(void (KWin::ShellClient::*)(), KWin::ShellClient*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:169
        #7 0x7fa299eb1202 in QtPrivate::QSlotObject<void (KWin::ShellClient::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt5/QtCore/qobject_impl.h:120
        #8 0x7fa288d0535b in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib64/libQt5Core.so.5+0x2ac35b)
        #9 0x7fa29a048150 in KWin::Screens::changed() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/kwin_autogen/EWIEGA46WW/moc_screens.cpp:262
        #10 0x7fa2999f577a in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::Screens::*)()>::call(void (KWin::Screens::*)(), KWin::Screens*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:136
        #11 0x7fa2999f5071 in void QtPrivate::FunctionPointer<void (KWin::Screens::*)()>::call<QtPrivate::List<>, void>(void (KWin::Screens::*)(), KWin::Screens*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:169
        #12 0x7fa2999f4cc8 in QtPrivate::QSlotObject<void (KWin::Screens::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt5/QtCore/qobject_impl.h:120
        #13 0x7fa288d05c41 in QObject::event(QEvent*) (/usr/lib64/libQt5Core.so.5+0x2acc41)
        #14 0x7fa28a17893b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16193b)
        #15 0x7fa28a17fcb3 in QApplication::notify(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x168cb3)
        #16 0x7fa288cd7d47 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib64/libQt5Core.so.5+0x27ed47)
        #17 0x7fa288cda334 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (/usr/lib64/libQt5Core.so.5+0x281334)
        #18 0x7fa288d2aa53 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib64/libQt5Core.so.5+0x2d1a53)
        #19 0x7fa273f4900c in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/plugins/qpa/KWinQpaPlugin.so+0xd900c)
        #20 0x7fa288cd6359 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib64/libQt5Core.so.5+0x27d359)
        #21 0x44c1d2 in QTestEventLoop::enterLoopMSecs(int) /usr/include/qt5/QtTest/qtesteventloop.h:105
        #22 0x44cda2 in QSignalSpy::wait(int) /usr/include/qt5/QtTest/qsignalspy.h:149
        #23 0x41fff3 in KWin::PointerInputTest::testUpdateFocusAfterScreenChange() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/pointer_input.cpp:298
        #24 0x446379 in KWin::PointerInputTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/autotests/integration/testPointerInput_autogen/include/pointer_input.moc:155
        #25 0x7fa288ce7ca5 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (/usr/lib64/libQt5Core.so.5+0x28eca5)
        #26 0x7fa2987c9939  (/usr/lib64/libQt5Test.so.5+0x14939)
        #27 0x7fa2987ca63f  (/usr/lib64/libQt5Test.so.5+0x1563f)
        #28 0x7fa2987cab70  (/usr/lib64/libQt5Test.so.5+0x15b70)
        #29 0x7fa2987cb12a in QTest::qExec(QObject*, int, char**) (/usr/lib64/libQt5Test.so.5+0x1612a)
        #30 0x4460a5 in main /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/pointer_input.cpp:1188
        #31 0x7fa287e22469 in __libc_start_main (/lib64/libc.so.6+0x20469)
        #32 0x40fe49 in _start (/home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/autotests/integration/testPointerInput+0x40fe49)
    
    0x60300003b060 is located 16 bytes inside of 24-byte region [0x60300003b050,0x60300003b068)
    freed by thread T0 here:
        #0 0x7fa29b7ec970 in operator delete(void*) (/usr/lib64/libasan.so.4+0xde970)
        #1 0x7fa28cc859fb in KWayland::Server::OutputInterface::~OutputInterface() /home/jenkins/workspace/Dependency Build Plasma kf5-qt5 SUSEQt5.9/kwayland/src/server/output_interface.h:46
        #2 0x7fa299ed88b8 in void qDeleteAll<QList<KWayland::Server::OutputInterface*>::const_iterator>(QList<KWayland::Server::OutputInterface*>::const_iterator, QList<KWayland::Server::OutputInterface*>::const_iterator) /usr/include/qt5/QtCore/qalgorithms.h:320
        #3 0x7fa299ed1daf in void qDeleteAll<QList<KWayland::Server::OutputInterface*> >(QList<KWayland::Server::OutputInterface*> const&) /usr/include/qt5/QtCore/qalgorithms.h:328
        #4 0x7fa299ebd92a in operator() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/wayland_server.cpp:371
        #5 0x7fa299eccc4e in call /usr/include/qt5/QtCore/qobjectdefs_impl.h:130
        #6 0x7fa299ecb626 in call<QtPrivate::List<>, void> /usr/include/qt5/QtCore/qobjectdefs_impl.h:240
        #7 0x7fa299ec85a8 in impl /usr/include/qt5/QtCore/qobject_impl.h:168
        #8 0x7fa288d0535b in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib64/libQt5Core.so.5+0x2ac35b)
        #9 0x7fa29a048150 in KWin::Screens::changed() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/kwin_autogen/EWIEGA46WW/moc_screens.cpp:262
        #10 0x7fa2999f577a in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::Screens::*)()>::call(void (KWin::Screens::*)(), KWin::Screens*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:136
        #11 0x7fa2999f5071 in void QtPrivate::FunctionPointer<void (KWin::Screens::*)()>::call<QtPrivate::List<>, void>(void (KWin::Screens::*)(), KWin::Screens*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:169
        #12 0x7fa2999f4cc8 in QtPrivate::QSlotObject<void (KWin::Screens::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt5/QtCore/qobject_impl.h:120
        #13 0x7fa288d05c41 in QObject::event(QEvent*) (/usr/lib64/libQt5Core.so.5+0x2acc41)
        #14 0x7fa28a17893b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16193b)
    
    previously allocated by thread T0 here:
        #0 0x7fa29b7ebc70 in operator new(unsigned long) (/usr/lib64/libasan.so.4+0xddc70)
        #1 0x7fa28cc17b08 in KWayland::Server::Display::createOutput(QObject*) /home/jenkins/workspace/Dependency Build Plasma kf5-qt5 SUSEQt5.9/kwayland/src/server/display.cpp:209
        #2 0x7fa299ebdeb9 in KWin::WaylandServer::syncOutputsToWayland() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/wayland_server.cpp:381
        #3 0x7fa299ebdae2 in KWin::WaylandServer::initOutputs() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/wayland_server.cpp:362
        #4 0x7fa299ee3416 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::WaylandServer::*)()>::call(void (KWin::WaylandServer::*)(), KWin::WaylandServer*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:136
        #5 0x7fa299ee0bb9 in void QtPrivate::FunctionPointer<void (KWin::WaylandServer::*)()>::call<QtPrivate::List<>, void>(void (KWin::WaylandServer::*)(), KWin::WaylandServer*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:169
        #6 0x7fa299edb94c in QtPrivate::QSlotObject<void (KWin::WaylandServer::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt5/QtCore/qobject_impl.h:120
        #7 0x7fa288d0535b in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib64/libQt5Core.so.5+0x2ac35b)
        #8 0x7fa29a032d5c in KWin::Application::screensCreated() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/kwin_autogen/EWIEGA46WW/moc_main.cpp:275
        #9 0x7fa2999a3574 in KWin::Application::createScreens() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/main.cpp:301
        #10 0x4728a6 in KWin::WaylandTestApplication::continueStartupWithScreens() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/kwin_wayland_test.cpp:118
        #11 0x47df94 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::WaylandTestApplication::*)()>::call(void (KWin::WaylandTestApplication::*)(), KWin::WaylandTestApplication*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:136
        #12 0x47d78c in void QtPrivate::FunctionPointer<void (KWin::WaylandTestApplication::*)()>::call<QtPrivate::List<>, void>(void (KWin::WaylandTestApplication::*)(), KWin::WaylandTestApplication*, void**) /usr/include/qt5/QtCore/qobjectdefs_impl.h:169
        #13 0x47cbf8 in QtPrivate::QSlotObject<void (KWin::WaylandTestApplication::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt5/QtCore/qobject_impl.h:120
        #14 0x7fa288d0535b in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib64/libQt5Core.so.5+0x2ac35b)
        #15 0x7fa29a0417fa in KWin::Platform::screensQueried() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/kwin_autogen/EWIEGA46WW/moc_platform.cpp:297
        #16 0x7fa273015d1d in KWin::VirtualBackend::init() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/plugins/platforms/virtual/virtual_backend.cpp:74
        #17 0x4726b4 in KWin::WaylandTestApplication::createBackend() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/kwin_wayland_test.cpp:112
        #18 0x47228b in KWin::WaylandTestApplication::performStartup() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/kwin_wayland_test.cpp:99
        #19 0x7fa29999d7fa in KWin::Application::start() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/main.cpp:156
        #20 0x419ec2 in KWin::PointerInputTest::initTestCase() /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/autotests/integration/pointer_input.cpp:103
        #21 0x44624d in KWin::PointerInputTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/build/autotests/integration/testPointerInput_autogen/include/pointer_input.moc:149
        #22 0x7fa288ce7ca5 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (/usr/lib64/libQt5Core.so.5+0x28eca5)
        #23 0x7fa2987caaf3  (/usr/lib64/libQt5Test.so.5+0x15af3)
        #24 0x7fa2987cb12a in QTest::qExec(QObject*, int, char**) (/usr/lib64/libQt5Test.so.5+0x1612a)

REPOSITORY
  R108 KWin

REVISION DETAIL
  https://phabricator.kde.org/D7359

To: davidedmundson, #plasma, graesslin
Cc: johanhelsing, graesslin, plasma-devel, kwin, #kwin, ZrenBot, progwolff, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart, lukas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170824/394790ee/attachment-0001.html>


More information about the Plasma-devel mailing list