Application: plasma-desktop (0.3) KDE Platform Version: 4.4.2 (KDE 4.4.2) Qt Version: 4.6.2 Operating System: Linux 2.6.32-24-generic x86_64 Distribution: Ubuntu 10.04.1 LTS -- Information about the crash: On moving from a compose window back to the main Thunderbird (3.0.7) window to open a new message, the desktop went black, reset and the crash handler popped up. Other open applications: Google Chrome, Kate and a Konsole window. -- Backtrace: Application: Plasma Workspace (kdeinit4), signal: Segmentation fault [Current thread is 1 (Thread 0x7fc9b3f2d760 (LWP 1884))] Thread 2 (Thread 0x7fc98a90b710 (LWP 1887)): #0 0x00007fc9b0f1efb3 in *__GI___poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #1 0x00007fc9ad8e34a9 in ?? () from /lib/libglib-2.0.so.0 #2 0x00007fc9ad8e38fc in g_main_context_iteration () from /lib/libglib-2.0.so.0 #3 0x00007fc9b2527566 in QEventDispatcherGlib::processEvents (this=0x226a290, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:414 #4 0x00007fc9b24fc992 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #5 0x00007fc9b24fcd6c in QEventLoop::exec (this=0x7fc98a90adb0, flags=) at kernel/qeventloop.cpp:201 #6 0x00007fc9b2406d59 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487 #7 0x00007fc9b24dd178 in QInotifyFileSystemWatcherEngine::run (this=0x2273d30) at io/qfilesystemwatcher_inotify.cpp:248 #8 0x00007fc9b2409775 in QThreadPrivate::start (arg=0x2273d30) at thread/qthread_unix.cpp:248 #9 0x00007fc9b21799ca in start_thread (arg=<value optimized out>) at pthread_create.c:300 #10 0x00007fc9b0f2b72d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #11 0x0000000000000000 in ?? () Thread 1 (Thread 0x7fc9b3f2d760 (LWP 1884)): [KCrash Handler] #5 0x0000000000000001 in ?? () #6 0x00007fc988e173ed in ~QHashNode (node=0x34381f0) at /usr/include/qt4/QtCore/qhash.h:217 #7 QHash<QString, Solid::Device>::deleteNode2 (node=0x34381f0) at /usr/include/qt4/QtCore/qhash.h:518 #8 0x00007fc9b24259bd in QHashData::free_helper (this=0x25b69a0, node_delete=0x7fc988e173e0 <QHash<QString, Solid::Device>::deleteNode2(QHashData::Node*)>) at tools/qhash.cpp:275 #9 0x00007fc988e13b16 in QHash<QString, Solid::Device>::freeData (this=0x26a5900, __in_chrg=<value optimized out>) at /usr/include/qt4/QtCore/qhash.h:567 #10 ~QHash (this=0x26a5900, __in_chrg=<value optimized out>) at /usr/include/qt4/QtCore/qhash.h:284 #11 ~HotplugEngine (this=0x26a5900, __in_chrg=<value optimized out>) at ../../../../../plasma/generic/dataengines/hotplug/hotplugengine.cpp:55 #12 0x00007fc9aaf09f5e in ~DataEngineManagerPrivate (this=0x22b5380, __in_chrg=<value optimized out>) at ../../plasma/dataenginemanager.cpp:54 #13 ~DataEngineManager (this=0x22b5380, __in_chrg=<value optimized out>) at ../../plasma/dataenginemanager.cpp:93 #14 0x00007fc9aaf0a0e7 in ~DataEngineManagerSingleton () at ../../plasma/dataenginemanager.cpp:74 #15 destroy () at ../../plasma/dataenginemanager.cpp:79 #16 0x00007fc9b0e7e262 in __run_exit_handlers (status=1) at exit.c:78 #17 *__GI_exit (status=1) at exit.c:100 #18 0x00007fc9b1710558 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:734 #19 0x00007fc9b2a45288 in KApplication::xioErrhandler (this=0x1ab9260, dpy=0x1ad4520) at ../../kdeui/kernel/kapplication.cpp:408 #20 0x00007fc9b33687fe in _XIOError (dpy=0x1ad4520) at ../../src/XlibInt.c:3138 #21 0x00007fc9b3370ada in _XReply (dpy=0x1ad4520, rep=0x7fffcc1b6510, extra=0, discard=0) at ../../src/xcb_io.c:522 #22 0x00007fc9b334d697 in XGetWindowProperty (dpy=0x1ad4520, w=<value optimized out>, property=307, offset=0, length=2048, delete=28105664, req_type=4, actual_type=0x7fffcc1b6660, actual_format=0x7fffcc1b666c, nitems=0x7fffcc1b6658, bytesafter=0x7fffcc1b6650, prop=0x7fffcc1b6648) at ../../src/GetProp.c:64 #23 0x00007fc9b2b88324 in NETWinInfo::update (this=0x31be6f0, dirty_props=<value optimized out>) at ../../kdeui/windowmanagement/netwm.cpp:3949 #24 0x00007fc9b2b8291d in KWindowInfo (this=0x7fffcc1b67b0, _win=65061388, properties=18446744071965638656, properties2=<value optimized out>) at ../../kdeui/windowmanagement/kwindowinfo_x11.cpp:74 #25 0x00007fc9b2b7e589 in KWindowSystem::windowInfo (win=140503561630688, properties=18446744073709551360, properties2=18446744073709006264) at ../../kdeui/windowmanagement/kwindowsystem_x11.cpp:388 #26 0x00007fc992792272 in Pager::windowRemoved (this=0x20a2580, id=140503561630688) at ../../../../../plasma/desktop/applets/pager/pager.cpp:634 #27 0x00007fc992797a94 in Pager::qt_metacall (this=0x20a2580, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffcc1b6900) at ./pager.moc:146 #28 0x00007fc9b2510e3f in QMetaObject::activate (sender=0x1dfbb30, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0xfffffffffff7adb8) at kernel/qobject.cpp:3293 #29 0x00007fc9b2b7d4f2 in KWindowSystem::windowRemoved (this=0x338ce90, _t1=65061388) at ./kwindowsystem.moc:133 #30 0x00007fc9b2b802fa in KWindowSystemPrivate::removeClient (this=0x1e37b40, w=65061388) at ../../kdeui/windowmanagement/kwindowsystem_x11.cpp:249 #31 0x00007fc9b2b8e3ad in NETRootInfo::update (this=0x1e37b68, dirty_props=<value optimized out>) at ../../kdeui/windowmanagement/netwm.cpp:2193 #32 0x00007fc9b2b8f0f3 in NETRootInfo::event (this=0x1e37b68, event=<value optimized out>, properties=0x7fffcc1b6c10, properties_size=5) at ../../kdeui/windowmanagement/netwm.cpp:2068 #33 0x00007fc9b2b805ac in KWindowSystemPrivate::x11Event (this=0x1e37b40, ev=0x7fffcc1b73d0) at ../../kdeui/windowmanagement/kwindowsystem_x11.cpp:136 #34 0x00007fc9b2a44d06 in KAppX11HackWidget::publicx11Event (this=<value optimized out>, _event=0x7fffcc1b73d0) at ../../kdeui/kernel/kapplication.cpp:903 #35 KApplication::x11EventFilter (this=<value optimized out>, _event=0x7fffcc1b73d0) at ../../kdeui/kernel/kapplication.cpp:953 #36 0x00007fc9a5d458c7 in PlasmaApp::x11EventFilter (this=0x1ab9260, event=0x7fffcc1b73d0) at ../../../../plasma/desktop/shell/plasmaapp.cpp:600 #37 0x00007fc9b170f641 in qt_x11EventFilter (ev=0x7fffcc1b73d0) at kernel/qapplication_x11.cpp:399 #38 0x00007fc9b171e191 in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fffcc1b73d0) at kernel/qapplication_x11.cpp:3231 #39 0x00007fc9b174a882 in x11EventSourceDispatch (s=0x1ad2e70, callback=<value optimized out>, user_data=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:146 #40 0x00007fc9ad8df8c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0 #41 0x00007fc9ad8e3748 in ?? () from /lib/libglib-2.0.so.0 #42 0x00007fc9ad8e38fc in g_main_context_iteration () from /lib/libglib-2.0.so.0 #43 0x00007fc9b2527513 in QEventDispatcherGlib::processEvents (this=0x1a4b140, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412 #44 0x00007fc9b174a46e in QGuiEventDispatcherGlib::processEvents (this=0x338ce90, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204 #45 0x00007fc9b24fc992 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #46 0x00007fc9b24fcd6c in QEventLoop::exec (this=0x7fffcc1b7700, flags=) at kernel/qeventloop.cpp:201 #47 0x00007fc9b2500aab in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981 #48 0x00007fc9a5d33fb2 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../../../plasma/desktop/shell/main.cpp:112 #49 0x00000000004070f3 in launch (argc=1, _name=<value optimized out>, args=<value optimized out>, cwd=<value optimized out>, envc=0, envs=<value optimized out>, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x40a4f9 "0") at ../../kinit/kinit.cpp:717 #50 0x0000000000407cb0 in handle_launcher_request (sock=8, who=<value optimized out>) at ../../kinit/kinit.cpp:1209 #51 0x000000000040823a in handle_requests (waitForPid=0) at ../../kinit/kinit.cpp:1402 #52 0x0000000000408e22 in main (argc=4, argv=<value optimized out>, envp=<value optimized out>) at ../../kinit/kinit.cpp:1845 Reported using DrKonqi
SVN commit 1175028 by aseigo: remove an unused bit of bookkeeping; seems to cause a crash on some systems due to an XIO error (though i'd expect NETWinInfo to protect against such things? hm..) BUG:251131 M +0 -25 pager.cpp M +0 -1 pager.h WebSVN link: http://websvn.kde.org/?view=rev&revision=1175028
SVN commit 1175029 by aseigo: remove an unused bit of bookkeeping; seems to cause a crash on some systems due to an XIO error (though i'd expect NETWinInfo to protect against such things? hm..) BUG:251131 M +0 -25 pager.cpp M +0 -1 pager.h WebSVN link: http://websvn.kde.org/?view=rev&revision=1175029
Looks like NET/KWindowInfo stuff does not handle the reentrancy visible in the backtrace, similar to bug 170519. Adding Lubos for some inspection.
XIO error usually means - the X server disconnected - threading problems
Lubos, I wasn't talking about the XIO error, but about the reentrancy problem. If you look at the backtrace, you see that NETRootInfo::update() emits KWindowSystem::windowRemoved() which in turn activates Pager::windowRemoved() that ultimatively calls into KWindowSystem::windowInfo() which calls NETWinInfo::update() an causes a crash. (note NETWinInfo != NETRootInfo, which could be the reason why it was not fixed by r1000474, which only handled reentrancy inside NETRootInfo alone).
There is no reentrancy, NETRootInfo::update() != NETWinInfo::update(). What I said above still stands, even if there was reentrancy.
SVN commit 1175732 by aseigo: remove the access to kwininfo, that's the important bit, actually CCBUG:251131 M +0 -4 pager.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1175732
SVN commit 1175733 by aseigo: remove the access to kwininfo, that's the important bit, actually CCBUG:251131 M +0 -4 pager.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1175733
the issue in this particular case is that it was (unnecessarily, it turns out) asking for the window information on a window that no longer existed. this is apparently what triggered the problem. it was asking for a KWinInfo using the WId passed into a slot from the WindowSystem::windowRemoved(WId) signal. there is no reentrancy in this case (it's all in the gui thread and with no recursive calls) and the x server seems to still have been connected to plasma-desktop.
No, that's not the important bit, either. Once more: X IO errors are only caused by problems with the X connection, either the connection going away, or getting corrupted. The first one is caused by (remote) connection problem or X going away/crashing, the second is a corruption of the data, usually caused by threading problems when accessing the X connection. This commit at most removes the place where the X problem showed up, but presumably the X IO error then would show up somewhere else later if exactly the same happens again. Accessing a non-existing window generates a non-IO X error, which is handled by the library.
odd question for the people reporting this bug: are you using an SVG wallpaper?
No, the wallpapers are jpgs - probably should've noted that I'm dual screen using twinview.