Bug 31619

Summary: Kdesktop crashes when running Esetroot
Product: [Unmaintained] kdesktop Reporter: martin
Component: generalAssignee: David Faure <faure>
Status: CLOSED NOT A BUG    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: RedHat Enterprise Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description martin 2001-08-26 15:28:25 UTC
(*** This bug was imported into bugs.kde.org ***)

Package:           kdesktop
Version:           kdebase 2.2-3 (using KDE 2.2.0 )
Severity:          normal
Installed from:    RedHat RPMs
Compiler:          Not Specified
OS:                Linux
OS/Compiler notes: glibc 2.2.4-5

Running Esetroot causes Kdesktop to crash/shut down. Esetroot sets the bagground image for applications such as Eterm which depends on a Enlightment compliant window manager to run in transparent mode. The crash occurs with probably all types of images (tested is png bmp and jpg) and is probably caused by Esetroot actually changing the bagground image which kdesktop won't accept. A workaround is to simply restart kdesktop and everything is back to normal with the settings of Esetroot still active. Would it be possible to correct this error by providing the functionality of Esetroot in kdesktop?

(Submitted via bugs.kde.org)
Comment 1 David Faure 2002-09-27 01:20:09 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...   
Comment 2 Maksim Orlovich 2002-10-21 04:27:54 UTC
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   
   
   
Comment 3 Maksim Orlovich 2002-10-21 05:14:06 UTC
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));  
	}  
      }  
    }  
  }  
        
       
Comment 4 Lubos Lunak 2003-04-09 12:36:56 UTC
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.