Summary: | xembedsniproxy segmentation faults in FdoSelectionManager::init when logging into Plasma on X after running scap-workbench remediation script | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | Matt Fagnani <matt.fagnani> |
Component: | XembedSNIProxy | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | materka |
Priority: | NOR | ||
Version: | 5.16.2 | ||
Target Milestone: | 1.0 | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
URL: | https://bugzilla.redhat.com/show_bug.cgi?id=1728265 | ||
Latest Commit: | https://commits.kde.org/plasma-workspace/741441765601c00cb84ecb7fa7b38e69d185f51a | Version Fixed In: | 5.17.1 |
Sentry Crash Report: |
Description
Matt Fagnani
2019-07-09 14:22:02 UTC
Qt Version: 5.12.4 Frameworks Version: 5.59.0 Operating System: Linux 5.3.0-0.rc1.git1.1.fc31.x86_64 x86_64 Distribution (Platform): Fedora RPMs -- Information about the crash: - What I was doing when the application crashed: I booted into the Fedora Rawhide/31 KDE Plasma spin image Fedora-KDE-Live-x86_64-Rawhide-20190724.n.0.iso at https://koji.fedoraproject.org/koji/buildinfo?buildID=1319740 I ran sudo dnf install x*amd* kwin*way* pla*way* kwayland-integration-5.16.2-1.fc31.x86_64 kwin-wayland-5.16.2-1.fc31.x86_64 plasma-workspace-wayland-5.16.2-2.fc31.x86_64 xorg-x11-drv-amdgpu-19.0.1-1.fc31.x86_64 xorg-x11-server-Xwayland-1.20.5-5.fc31.x86_64 I logged out of Plasma. I switched to VT2 then I ran sudo systemctl restart sddm. Plasma on X logged in automatically but Plasma froze on the splash screen. I ran sudo systemctl stop sddm in VT2. xembedsniproxy from plasma-workspace-5.16.2 had a segmentation fault in FdoSelectionManager::init at /usr/src/debug/plasma-workspace-5.16.2-2.fc31.x86_64/xembed-sni-proxy/fdoselectionmanager.cpp:69 69 if (reply->present) { The crash had a similar trace using coredumpctl gdb as I reported before. The pointer reply was null so reply->present looks like a null pointer dereference. I'm unsure if the xembedsniproxy crash happened right before or after I ran startplasmacompositor & from VT2 based on the journal. Plasma on Wayland started, but drkonqi showed a segmentation fault in plasmashell which I reported in bug 410211. I installed the plasma-workspaces and qt5-qtbase debugging rpms. (gdb) thread apply all bt full Thread 2 (Thread 0x7f1a4c646700 (LWP 3717)): #0 0x00007f1a5cbed79f in poll () from /lib64/libc.so.6 No symbol table info available. #1 0x00007f1a5b8202ee in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0 No symbol table info available. #2 0x00007f1a5b820423 in g_main_context_iteration () from /lib64/libglib-2.0.so.0 No symbol table info available. #3 0x00007f1a5d180bb5 in QEventDispatcherGlib::processEvents (this=0x7f1a440018e0, flags=...) at kernel/qeventdispatcher_glib.cpp:422 d = 0x7f1a44005250 canWait = true savedFlags = {i = 0} result = <optimized out> #4 0x00007f1a5d12a9db in QEventLoop::exec (this=this@entry=0x7f1a4c645d70, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 d = 0x7f1a440065f0 locker = {val = 94273122388240} ref = <optimized out> app = <optimized out> #5 0x00007f1a5cf83625 in QThread::exec (this=this@entry=0x7f1a5da82060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:120 d = 0x55bdabf8c8a0 locker = {val = 94273122388240} --Type <RET> for more, q to quit, c to continue without paging--c eventLoop = {<QObject> = {_vptr.QObject = 0x7f1a5d3dba28 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2cb300 <qt_meta_stringdata_QObject>, data = 0x7f1a5d2cb1e0 <qt_meta_data_QObject>, static_metacall = 0x7f1a5d15dfc0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7f1a440065f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2ce220 <qt_meta_stringdata_Qt>, data = 0x7f1a5d2cb420 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f1a5d3d3fe0 <QObject::staticMetaObject>, stringdata = 0x7f1a5d2c56a0 <qt_meta_stringdata_QEventLoop>, data = 0x7f1a5d2c5640 <qt_meta_data_QEventLoop>, static_metacall = 0x7f1a5d12a6f0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #6 0x00007f1a5d9fef4a in QDBusConnectionManager::run (this=0x7f1a5da82060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178 locker = <optimized out> #7 0x00007f1a5cf84776 in QThreadPrivate::start (arg=0x7f1a5da82060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:361 thr = 0x7f1a5da82060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder> data = <optimized out> __clframe = {__cancel_routine = 0x7f1a5cf83eb0 <QThreadPrivate::finish(void*)>, __cancel_arg = 0x7f1a5da82060 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>, __do_it = 1, __cancel_type = <optimized out>} #8 0x00007f1a5cad84e2 in start_thread () from /lib64/libpthread.so.0 No symbol table info available. #9 0x00007f1a5cbf8333 in clone () from /lib64/libc.so.6 No symbol table info available. Thread 1 (Thread 0x7f1a5d98bc80 (LWP 3468)): #0 FdoSelectionManager::init (this=0x7ffda0c272b0) at /usr/src/debug/plasma-workspace-5.16.2-2.fc31.x86_64/xembed-sni-proxy/fdoselectionmanager.cpp:69 c = 0x55bdabee0c00 reply = 0x0 #1 0x00007f1a5d162576 in QtPrivate::QSlotObjectBase::call (a=0x7ffda0c26e90, r=<optimized out>, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394 No locals. #2 QSingleShotTimer::timerEvent (this=0x55bdabf51350) at kernel/qtimer.cpp:318 args = {0x0} #3 0x00007f1a5d156b75 in QObject::event (this=0x55bdabf51350, e=<optimized out>) at kernel/qobject.cpp:1282 No locals. #4 0x00007f1a5d12ba45 in doNotify (receiver=<optimized out>, event=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject.h:142 No locals. #5 0x00007f1a5d12bad8 in QCoreApplication::notifyInternal2 (receiver=0x55bdabf51350, event=0x7ffda0c26fe0) at kernel/qcoreapplication.cpp:1084 selfRequired = true result = false cbdata = {0x55bdabf51350, 0x7ffda0c26fe0, 0x7ffda0c26f6f} d = <optimized out> threadData = 0x55bdabece5a0 scopeLevelCounter = {threadData = 0x55bdabece5a0} #6 0x00007f1a5d17fe73 in QTimerInfoList::activateTimers (this=0x55bdabf8a6d0) at kernel/qtimerinfo_unix.cpp:643 e = {<QEvent> = {_vptr.QEvent = 0x7f1a5d3dbc90 <vtable for QTimerEvent+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2c65e0 <qt_meta_stringdata_QEvent>, data = 0x7f1a5d2c6020 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 1, posted = 0, spont = 0, m_accept = 1, reserved = 5503}, id = 1} currentTimerInfo = 0x0 n_act = 0 maxCount = 0 currentTime = {tv_sec = 758, tv_nsec = 21159576} #7 0x00007f1a5d18072c in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:182 timerSource = <optimized out> #8 0x00007f1a5b81ffed in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 No symbol table info available. #9 0x00007f1a5b820380 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0 No symbol table info available. #10 0x00007f1a5b820423 in g_main_context_iteration () from /lib64/libglib-2.0.so.0 No symbol table info available. #11 0x00007f1a5d180bb5 in QEventDispatcherGlib::processEvents (this=0x55bdabed2610, flags=...) at kernel/qeventdispatcher_glib.cpp:422 d = 0x55bdabf8feb0 canWait = true savedFlags = {i = 0} result = <optimized out> #12 0x00007f1a5d12a9db in QEventLoop::exec (this=this@entry=0x7ffda0c27220, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 d = 0x55bdabf8fac0 locker = {val = 94273121609392} ref = <optimized out> app = <optimized out> #13 0x00007f1a5d132706 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 threadData = 0x55bdabece5a0 eventLoop = {<QObject> = {_vptr.QObject = 0x7f1a5d3dba28 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2cb300 <qt_meta_stringdata_QObject>, data = 0x7f1a5d2cb1e0 <qt_meta_data_QObject>, static_metacall = 0x7f1a5d15dfc0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55bdabf8fac0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2ce220 <qt_meta_stringdata_Qt>, data = 0x7f1a5d2cb420 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f1a5d3d3fe0 <QObject::staticMetaObject>, stringdata = 0x7f1a5d2c56a0 <qt_meta_stringdata_QEventLoop>, data = 0x7f1a5d2c5640 <qt_meta_data_QEventLoop>, static_metacall = 0x7f1a5d12a6f0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #14 0x000055bdaba71ba1 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace-5.16.2-2.fc31.x86_64/xembed-sni-proxy/main.cpp:68 app = <incomplete type> disableSessionManagement = <optimized out> manager = {<QObject> = {_vptr.QObject = 0x55bdaba80328 <vtable for FdoSelectionManager+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2cb300 <qt_meta_stringdata_QObject>, data = 0x7f1a5d2cb1e0 <qt_meta_data_QObject>, static_metacall = 0x7f1a5d15dfc0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55bdabf8dc20}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f1a5d2ce220 <qt_meta_stringdata_Qt>, data = 0x7f1a5d2cb420 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, <QAbstractNativeEventFilter> = {_vptr.QAbstractNativeEventFilter = 0x55bdaba803a0 <vtable for FdoSelectionManager+136>, d = 0x7f1a5cb830c4 <malloc+116>}, static staticMetaObject = {d = {superdata = 0x7f1a5d3d3fe0 <QObject::staticMetaObject>, stringdata = 0x55bdaba7b620 <qt_meta_stringdata_FdoSelectionManager>, data = 0x55bdaba7b580 <qt_meta_data_FdoSelectionManager>, static_metacall = 0x55bdaba72270 <FdoSelectionManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, m_damageEventBase = 1 '\001', m_damageWatches = {{d = 0x7f1a5d200a00 <QHashData::shared_null>, e = 0x7f1a5d200a00 <QHashData::shared_null>}}, m_proxies = {{d = 0x7f1a5d200a00 <QHashData::shared_null>, e = 0x7f1a5d200a00 <QHashData::shared_null>}}, m_selectionOwner = 0x55bdabf8d6c0} rc = <optimized out> Git commit 741441765601c00cb84ecb7fa7b38e69d185f51a by Nate Graham, on behalf of Konrad Materka. Committed on 10/10/2019 at 14:42. Pushed by ngraham into branch 'Plasma/5.17'. [XembedSNIProxy] Do not crash on null pointer Summary: XCB may return null pointer as a response. Add a check to prevent segmentation fault. FIXED-IN: 5.17.1 Test Plan: It is hard to reproduce, but the reason of the segmentation fault is pretty obvious, thanks to the debug dump from bug 409652 Reviewers: #plasma_workspaces, #plasma, davidedmundson Reviewed By: #plasma_workspaces, #plasma, davidedmundson Subscribers: ngraham, plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D24514 M +11 -11 xembed-sni-proxy/fdoselectionmanager.cpp M +2 -3 xembed-sni-proxy/fdoselectionmanager.h https://commits.kde.org/plasma-workspace/741441765601c00cb84ecb7fa7b38e69d185f51a |