| Summary: | Kdesktop crashes when running Esetroot | ||
|---|---|---|---|
| Product: | [Unmaintained] kdesktop | Reporter: | martin |
| Component: | general | Assignee: | David Faure <faure> |
| Status: | CLOSED NOT A BUG | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | RedHat Enterprise Linux | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
martin
2001-08-26 15:28:25 UTC
Please provide a backtrace of kdesktop The easiest way is kdesktop --nofork gdb kdesktop core bt but you'll probably need to recompile kdesktop from sources first... This looks related to #47644... Hi.. Can reproduce with HEAD and Eterm-0.9.1-6mdk Nasty bt, not a crash but an abort due to an XIO error(!), will try with XSYnchronize shortly: Breakpoint 3, 0x40932526 in QApplication::exit(int) () from /usr/lib/libqt-mt.so.3 (gdb) bt #0 0x40932526 in QApplication::exit(int) () from /usr/lib/libqt-mt.so.3 #1 0x405fc53b in KApplication::xioErrhandler() () from /opt/kde3/lib/libkdecore.so.4 #2 0x405faf18 in kde_xio_errhandler () from /opt/kde3/lib/libkdecore.so.4 #3 0x40ddad05 in _XIOError () from /usr/X11R6/lib/libX11.so.6 #4 0x40dd904c in _XRead () from /usr/X11R6/lib/libX11.so.6 #5 0x40dd86c9 in _XEventsQueued () from /usr/X11R6/lib/libX11.so.6 #6 0x40dcbb58 in XPending () from /usr/X11R6/lib/libX11.so.6 #7 0x408e872f in QEventLoop::processEvents(unsigned) (this=0x808a188, flags=4) at kernel/qeventloop_x11.cpp:146 #8 0x4094631b in QEventLoop::enterLoop() (this=0x808a188) at kernel/qeventloop.cpp:188 #9 0x4094625e in QEventLoop::exec() (this=0x808a188) at kernel/qeventloop.cpp:138 #10 0x40932511 in QApplication::exec() () from /usr/lib/libqt-mt.so.3 #11 0x4003ae10 in main () from /opt/kde3/lib/kdesktop.so #12 0x40fea082 in __libc_start_main () from /lib/i686/libc.so.6 OK, I think this is not a kdesktop bug at all -- it's Esetroot being a horrible citizen, and killing
kdesktop. From its sources - note the XKillClient line; if it gets removed, kdesktop keeps on
running (ironically, kdesktop gets killed because it provides ESETROOT_PMAP_ID):
prop_root = XInternAtom(Xdisplay, "_XROOTPMAP_ID", True);
prop_esetroot = XInternAtom(Xdisplay, "ESETROOT_PMAP_ID", True);
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): prop_root == 0x%08x, prop_esetroot
== 0x%08x\n", __FILE__, __LINE__,
(unsigned int) p, (unsigned int) prop_root, (unsigned int) prop_esetroot);
}
if (prop_root != None && prop_esetroot != None) {
XGetWindowProperty(Xdisplay, Xroot, prop_root, 0L, 1L, False, AnyPropertyType,
&type, &format, &length, &after, &data_root);
if (type == XA_PIXMAP) {
XGetWindowProperty(Xdisplay, Xroot, prop_esetroot, 0L, 1L, False, AnyPropertyType,
&type, &format, &length, &after, &data_esetroot);
if (data_root && data_esetroot) {
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): data_root == 0x%08x,
data_esetroot == 0x%08x\n", __FILE__, __LINE__,
(unsigned int) p, (unsigned int) *((Pixmap *) data_root), (unsigned int) *((Pixmap *)
data_esetroot));
}
if (type == XA_PIXMAP && *((Pixmap *) data_root) == *((Pixmap *) data_esetroot)) {
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): XKillClient() is being called.\n",
__FILE__, __LINE__, (unsigned int) p);
}
XKillClient(Xdisplay, *((Pixmap *) data_root));
}
}
}
}
This was kdesktop bug - it's not supposed to export ESETROOT_PMAP_ID when it can't cope with being XKillClient()-ed. Fixed. Note that Esetroot won't have any visual effect with kdesktop anyway. |