On Wed, Feb 06, 2008 at 01:33:17AM +0600, Roman S Dubtsov wrote:
> Hi,
> 
> I'm starting a new thread regarding crashes on background changes coming from 
> gnome-settings-daemon. Now it is about FvwmButtons =)
> 
> After Dominik's update to error handler, I was able to obtain core dump for 
> FvwmButtons. Gdb log attached (I could not figure out what's wrong there, but 
> I guess something has happened in previous loop iteration in 
> change_colorset(). Error message stayed the same:
> 
> ComboPanel: Cause of next X Error.
>    Error: 13 (BadGC (invalid GC parameter))
>    Major opcode of failed request:  70 (PolyFillRectangle)
>    Minor opcode of failed request:  0
>    Resource id of failed request:  0xe00020
>  Leaving a core dump now
> 
> I have inseted two more XSyncs in FvwmButtons.c for debugging purposes: one 
> in 
> SetTransparentBackground() and another one in 
> change_swallowed_window_colorset(), but backtrace did not change.
> 
> Hope this will be helpful. I still has the core dump so I can retrieve some 
> more information if you need it.

I think the crash is caused by the call to XFillRectangle in
libs/Colorset.c, line 452.  Again, the cs_pixmap probably has been
destroyed by the time the gc is used.  I have committed a patch to
CVS that may solve the problem.  Can you try it out please?

> GNU gdb 6.7.1-debian
> Copyright (C) 2007 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu"...
> Using host libthread_db library "/lib/i686/cmov/libthread_db.so.1".
> 
> warning: Can't read pathname for load map: Input/output error.
> Reading symbols from /usr/lib/libXft.so.2...done.
> Loaded symbols for /usr/lib/libXft.so.2
> Reading symbols from /usr/lib/libX11.so.6...done.
> Loaded symbols for /usr/lib/libX11.so.6
> Reading symbols from /usr/lib/libfreetype.so.6...done.
> Loaded symbols for /usr/lib/libfreetype.so.6
> Reading symbols from /usr/lib/libz.so.1...done.
> Loaded symbols for /usr/lib/libz.so.1
> Reading symbols from /usr/lib/libfontconfig.so.1...done.
> Loaded symbols for /usr/lib/libfontconfig.so.1
> Reading symbols from /usr/lib/libXrender.so.1...done.
> Loaded symbols for /usr/lib/libXrender.so.1
> Reading symbols from /usr/lib/libXpm.so.4...done.
> Loaded symbols for /usr/lib/libXpm.so.4
> Reading symbols from /usr/lib/libSM.so.6...done.
> Loaded symbols for /usr/lib/libSM.so.6
> Reading symbols from /usr/lib/libICE.so.6...done.
> Loaded symbols for /usr/lib/libICE.so.6
> Reading symbols from /usr/lib/libXinerama.so.1...done.
> Loaded symbols for /usr/lib/libXinerama.so.1
> Reading symbols from /usr/lib/libXext.so.6...done.
> Loaded symbols for /usr/lib/libXext.so.6
> Reading symbols from /lib/i686/cmov/libm.so.6...done.
> Loaded symbols for /lib/i686/cmov/libm.so.6
> Reading symbols from /usr/lib/libXcursor.so.1...done.
> Loaded symbols for /usr/lib/libXcursor.so.1
> Reading symbols from /usr/lib/libfribidi.so.0...done.
> Loaded symbols for /usr/lib/libfribidi.so.0
> Reading symbols from /usr/lib/libpng12.so.0...done.
> Loaded symbols for /usr/lib/libpng12.so.0
> Reading symbols from /usr/lib/librsvg-2.so.2...done.
> Loaded symbols for /usr/lib/librsvg-2.so.2
> Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...done.
> Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0
> Reading symbols from /usr/lib/libgobject-2.0.so.0...done.
> Loaded symbols for /usr/lib/libgobject-2.0.so.0
> Reading symbols from /usr/lib/libgmodule-2.0.so.0...done.
> Loaded symbols for /usr/lib/libgmodule-2.0.so.0
> Reading symbols from /lib/i686/cmov/libdl.so.2...done.
> Loaded symbols for /lib/i686/cmov/libdl.so.2
> Reading symbols from /usr/lib/libglib-2.0.so.0...done.
> Loaded symbols for /usr/lib/libglib-2.0.so.0
> Reading symbols from /usr/lib/libcairo.so.2...done.
> Loaded symbols for /usr/lib/libcairo.so.2
> Reading symbols from /lib/i686/cmov/libc.so.6...done.
> Loaded symbols for /lib/i686/cmov/libc.so.6
> Reading symbols from /usr/lib/libxcb-xlib.so.0...done.
> Loaded symbols for /usr/lib/libxcb-xlib.so.0
> Reading symbols from /usr/lib/libxcb.so.1...done.
> Loaded symbols for /usr/lib/libxcb.so.1
> Reading symbols from /usr/lib/libexpat.so.1...done.
> Loaded symbols for /usr/lib/libexpat.so.1
> Reading symbols from /usr/lib/libXau.so.6...done.
> Loaded symbols for /usr/lib/libXau.so.6
> Reading symbols from /lib/ld-linux.so.2...done.
> Loaded symbols for /lib/ld-linux.so.2
> Reading symbols from /usr/lib/libXfixes.so.3...done.
> Loaded symbols for /usr/lib/libXfixes.so.3
> Reading symbols from /usr/lib/libgsf-1.so.114...done.
> Loaded symbols for /usr/lib/libgsf-1.so.114
> Reading symbols from /usr/lib/libcroco-0.6.so.3...done.
> Loaded symbols for /usr/lib/libcroco-0.6.so.3
> Reading symbols from /usr/lib/libxml2.so.2...done.
> Loaded symbols for /usr/lib/libxml2.so.2
> Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done.
> Loaded symbols for /usr/lib/libpangoft2-1.0.so.0
> Reading symbols from /usr/lib/libpangocairo-1.0.so.0...done.
> Loaded symbols for /usr/lib/libpangocairo-1.0.so.0
> Reading symbols from /usr/lib/libpango-1.0.so.0...done.
> Loaded symbols for /usr/lib/libpango-1.0.so.0
> Reading symbols from /usr/lib/libpcre.so.3...done.
> Loaded symbols for /usr/lib/libpcre.so.3
> Reading symbols from /usr/lib/libXdmcp.so.6...done.
> Loaded symbols for /usr/lib/libXdmcp.so.6
> Reading symbols from /lib/i686/cmov/libpthread.so.0...done.
> Loaded symbols for /lib/i686/cmov/libpthread.so.0
> Reading symbols from /lib/libbz2.so.1.0...done.
> Loaded symbols for /lib/libbz2.so.1.0
> Core was generated by 
> `/home/busa/apps/fvwm-cvs/libexec/fvwm/2.5.25/FvwmButtons 8 5 none 0 8 -g 
> 816x35'.
> Program terminated with signal 11, Segmentation fault.
> #0  PrintXErrorAndCoredump (dpy=0x8091de0, error=0xbf82e60c, 
>     MyName=0x808b068 "ComboPanel") at XError.c:85
> 85                    *nullp = 99;
> (gdb) bt
> #0  PrintXErrorAndCoredump (dpy=0x8091de0, error=0xbf82e60c, 
>     MyName=0x808b068 "ComboPanel") at XError.c:85
> #1  0x0804fa97 in myErrorHandler (dpy=0x8091de0, event=0xbf82e60c) at 
> FvwmButtons.c:577
> #2  0xb7e8c8b3 in _XError () from /usr/lib/libX11.so.6
> #3  0xb7e94069 in ?? () from /usr/lib/libX11.so.6
> #4  0x08091de0 in ?? ()
> #5  0x080c2600 in ?? ()
> #6  0xbf82e6b8 in ?? ()
> #7  0xb7e934c1 in _XGetXCBBuffer () from /usr/lib/libX11.so.6
> #8  0xb7e943ea in _XReply () from /usr/lib/libX11.so.6
> #9  0xb7e88338 in XSync () from /usr/lib/libX11.so.6
> #10 0x0804dfcb in change_colorset (colorset=11, Event=0x0) at 
> FvwmButtons.c:2705
> #11 0x0805063a in process_message (type=262144, body=0x8088b50) at 
> FvwmButtons.c:2735
> #12 0x08050939 in My_FNextEvent (Dpy=0x8091de0, event=0xbf82ea68) at 
> FvwmButtons.c:2443
> #13 0x08051680 in Loop () at FvwmButtons.c:1068
> #14 0x08052fc6 in main (argc=9, argv=0xbf82ed04) at FvwmButtons.c:878
> (gdb) info locals
> msg = "BadGC (invalid GC parameter)", '\0' <repeats 227 times>
> suc = <value optimized out>
> (gdb) frame 10
> #10 0x0804dfcb in change_colorset (colorset=11, Event=0x0) at 
> FvwmButtons.c:2705
> 2705                                          XSync(Dpy, 0);
> (gdb) list
> 2700                          {
> 2701                                  if (b->swallow&b_FvwmModule)
> 2702                                  {
> 2703                                          /* the bg has changed send the 
> info to
> 2704                                           * modules */
> 2705                                          XSync(Dpy, 0);
> 2706                                          send_bg_change_to_module(b, 
> Event);
> 2707                                  }
> 2708                                  else if 
> (CSET_IS_TRANSPARENT_PR(b->colorset) &&
> 2709                                          
> !buttonBackgroundButton(b->parent, NULL))
> (gdb) info locals
> ub = (button_info *) 0x80a0448
> b = (button_info *) 0x80a5e90
> button = 20
> (gdb) info args
> colorset = 11
> Event = (XEvent *) 0x0
> (gdb) quit



Ciao

Dominik ^_^  ^_^

-- 
Dominik Vogt

Reply via email to