Improving faces inserting

Adam Sjøgren asjo at koldfront.dk
Tue May 6 07:28:49 EDT 2008


On Mon, 5 May 2008 16:34:26 -0600, Jerry wrote:

> I can see all of those steps taking place in your backtrace, and #8
> should prevent exactly the problem you are seeing.  Would you be
> willing to do the following?

> 1. Run XEmacs under gdb.  Don't set any breakpoints yet.
> 2. Start Gnus.  Get ready to read the offending article.
> 3. Break into the debugger and set a breakpoint at glyphs-eimage.c, line 908.
> 4. When that gets hit, set a watchpoint on unwind.info_ptr.
> 5. Continue and see what happens.

I have tried to do this now, this is what happened:

$ ulimit -c unlimited
$ gdb /usr/bin/xemacs
GNU gdb 6.8-debian
Copyright (C) 2008 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 "powerpc-linux-gnu"...
(gdb) run
Starting program: /usr/bin/xemacs 
[Thread debugging using libthread_db enabled]
[New Thread 0x48026cd0 (LWP 3060)]
^C                       
Program received signal SIGINT, Interrupt.
[Switching to Thread 0x48026cd0 (LWP 3060)]
0x0f76c010 in poll () from /lib/libc.so.6
(gdb) break glyphs-eimage.c:908
Breakpoint 1 at 0x1015b500: file glyphs-eimage.c, line 908.
(gdb) continue
Continuing.

Breakpoint 1, png_instantiate (image_instance=290807504, instantiator=294367528, 
    pointer_fg=<value optimized out>, pointer_bg=<value optimized out>, dest_mask=111, domain=294991480)
    at glyphs-eimage.c:908
908       unwind.info_ptr = info_ptr;
(gdb) watch unwind.info_ptr
Hardware watchpoint 2: unwind.info_ptr
(gdb) continue
Continuing.
*** glibc detected *** /usr/bin/xemacs: double free or corruption (out): 0x1155cce0 ***
======= Backtrace: =========
/lib/libc.so.6[0xf70ec88]
/lib/libc.so.6(cfree+0xcc)[0xf71133c]
/usr/bin/xemacs(xfree_1+0x30)[0x10048550]
/usr/bin/xemacs[0x1015b76c]
/usr/bin/xemacs[0x10155684]
/usr/bin/xemacs[0x10158a00]
/usr/bin/xemacs[0x100953fc]
/usr/bin/xemacs(internal_catch+0xd0)[0x10093d30]
/usr/bin/xemacs(call_with_suspended_errors+0x1e4)[0x1009c774]
/usr/bin/xemacs[0x101eb83c]
/usr/bin/xemacs(specifier_instance+0x344)[0x101ec094]
/usr/bin/xemacs(glyph_image_instance+0x84)[0x1014df94]
/usr/bin/xemacs(invalidate_glyph_geometry_maybe+0x13c)[0x1014e38c]
/usr/bin/xemacs[0x101b3de0]
/usr/bin/xemacs[0x101b493c]
/usr/bin/xemacs[0x101bbb64]
/usr/bin/xemacs[0x101bf7b0]
/usr/bin/xemacs[0x101c5f9c]
/usr/bin/xemacs[0x101c6f4c]
/usr/bin/xemacs[0x101c5d6c]
/usr/bin/xemacs[0x101c6f4c]
/usr/bin/xemacs(redisplay_frame+0x114)[0x101c70c4]
/usr/bin/xemacs[0x101c743c]
/usr/bin/xemacs(redisplay+0x55c)[0x101c7fdc]
/usr/bin/xemacs(Fnext_event+0xd74)[0x10106144]
/usr/bin/xemacs(Fcommand_loop_1+0x21c)[0x1006bcfc]
/usr/bin/xemacs(condition_case_1+0x10c)[0x1009cb8c]
/usr/bin/xemacs[0x1006c2e8]
/usr/bin/xemacs(internal_catch+0xd0)[0x10093d30]
/usr/bin/xemacs(initial_command_loop+0x358)[0x1006cb48]
/usr/bin/xemacs(xemacs_21_4_21_powerpc_unknown_linux+0xa88)[0x1008fef8]
/usr/bin/xemacs[0x100908f4]
/lib/libc.so.6[0xf6ad720]
/lib/libc.so.6[0xf6ad8e0]
======= Memory map: ========
00100000-00103000 r-xp 00100000 00:00 0          [vdso]
0f1e6000-0f1ea000 r-xp 00000000 03:03 48522245   /lib/libnss_dns-2.7.so
0f1ea000-0f1f9000 ---p 00004000 03:03 48522245   /lib/libnss_dns-2.7.so
0f1f9000-0f1fa000 r--p 00003000 03:03 48522245   /lib/libnss_dns-2.7.so
0f1fa000-0f1fb000 rw-p 00004000 03:03 48522245   /lib/libnss_dns-2.7.so
0f20b000-0f211000 r-xp 00000000 03:03 151539028  /usr/lib/libnss_db-2.2.3.so
0f211000-0f220000 ---p 00006000 03:03 151539028  /usr/lib/libnss_db-2.2.3.so
0f220000-0f221000 rw-p 00005000 03:03 151539028  /usr/lib/libnss_db-2.2.3.so
0f231000-0f237000 r-xp 00000000 03:03 151539146  /usr/lib/libXfixes.so.3.1.0
0f237000-0f246000 ---p 00006000 03:03 151539146  /usr/lib/libXfixes.so.3.1.0
0f246000-0f247000 rwxp 00005000 03:03 151539146  /usr/lib/libXfixes.so.3.1.0
0f257000-0f263000 r-xp 00000000 03:03 151538361  /usr/lib/libXrender.so.1.3.0
0f263000-0f272000 ---p 0000c000 03:03 151538361  /usr/lib/libXrender.so.1.3.0
0f272000-0f273000 rw-p 0000b000 03:03 151538361  /usr/lib/libXrender.so.1.3.0
0f283000-0f28e000 r-xp 00000000 03:03 151541022  /usr/lib/libXcursor.so.1.0.2
0f28e000-0f29d000 ---p 0000b000 03:03 151541022  /usr/lib/libXcursor.so.1.0.2
0f29d000-0f29e000 rw-p 0000a000 03:03 151541022  /usr/lib/libXcursor.so.1.0.2
0f2ae000-0f2b0000 r-xp 00000000 03:03 115942607  /usr/lib/gconv/ISO8859-1.so
0f2b0000-0f2bf000 ---p 00002000 03:03 115942607  /usr/lib/gconv/ISO8859-1.so
0f2bf000-0f2c0000 r--p 00001000 03:03 115942607  /usr/lib/gconv/ISO8859-1.so
0f2c0000-0f2c1000 rw-p 00002000 03:03 115942607  /usr/lib/gconv/ISO8859-1.so
0f2d1000-0f2db000 r-xp 00000000 03:03 48538087   /lib/libnss_nis-2.7.so
0f2db000-0f2eb000 ---p 0000a000 03:03 48538087   /lib/libnss_nis-2.7.so
0f2eb000-0f2ec000 r--p 0000a000 03:03 48538087   /lib/libnss_nis-2.7.so
0f2ec000-0f2ed000 rw-p 0000b000 03:03 48538087   /lib/libnss_nis-2.7.so
0f2fd000-0f313000 r-xp 00000000 03:03 48323667   /lib/libnsl-2.7.so
0f313000-0f323000 ---p 00016000 03:03 48323667   /lib/libnsl-2.7.so
0f323000-0f324000 r--p 00016000 03:03 48323667   /lib/libnsl-2.7.so
0f324000-0f325000 rw-p 00017000 03:03 48323667   /lib/libnsl-2.7.so
0f325000-0f327000 rw-p 0f325000 00:00 0 
0f337000-0f33f000 r-xp 00000000 03:03 48323669   /lib/libnss_compat-2.7.so
0f33f000-0f34e000 ---p 00008000 03:03 48323669   /lib/libnss_compat-2.7.so
0f34e000-0f34f000 r--p 00007000 03:03 48323669   /lib/libnss_compat-2.7.so
0f34f000-0f350000 rw-p 00008000 03:03 48323669   /lib/libnss_compat-2.7.so
0f360000-0f36b000 r-xp 00000000 03:03 48538085   /lib/libnss_files-2.7.so
0f36b000-0f37a000 ---p 0000b000 03:03 48538085   /lib/libnss_files-2.7.so
0f37a000-0f37b000 r--p 0000a000 03:03 48538085   /lib/libnss_files-2.7.so
0f37b000-0f37c000 rw-p 0000b000 03:03 48538085   /lib/libnss_files-2.7.so
0f38c000-0f3fd000 r-xp 00000000 03:03 151538524  /usr/lib/libgcrypt.so.11.4.4
0f3fd000-0f40d000 ---p 00071000 03:03 151538524  /usr/lib/libgcrypt.so.11.4.4
0f40d000-0f40f000 rw-p 00071000 03:03 151538524  /usr/lib/libgcrypt.so.11.4.4
0f41f000-0f423000 r-xp 00000000 03:03 151538806  /usr/lib/libgpg-error.so.0.3.0
0f423000-0f432000 ---p 00004000 03:03 151538806  /usr/lib/libgpg-error.so.0.3.0
0f432000-0f433000 rwxp 00003000 03:03 151538806  /usr/lib/libgpg-error.so.0.3.0
0f443000-0f453000 r-xp 00000000 03:03 151529797  /usr/lib/libtasn1.so.3.0.15
0f453000-0f454000 rw-p 00010000 03:03 151529797  /usr/lib/libtasn1.so.3.0.15
0f464000-0f4ed000 r-xp 00000000 03:03 151538253  /usr/lib/libgnutls.so.26.1.4
0f4ed000-0f4fc000 ---p 00089000 03:03 151538253  /usr/lib/libgnutls.so.26.1.4
0f4fc000-0f503000 rw-p 00088000 03:03 151538253  /usr/lib/libgnutls.so.26.1.4
0f513000-0f52f000 r-xp 0000000
Program received signal SIGABRT, Aborted.
0x0f6c5e5c in raise () from /lib/libc.so.6
(gdb) bt 
#0  0x0f6c5e5c in raise () from /lib/libc.so.6
#1  0x0f6c7af4 in abort () from /lib/libc.so.6
#2  0x0f7070d4 in ?? () from /lib/libc.so.6
#3  0x0f70ec88 in ?? () from /lib/libc.so.6
#4  0x0f71133c in free () from /lib/libc.so.6
#5  0x10048550 in xfree_1 (block=0x1155cce0) at alloc.c:296
#6  0x1015b76c in png_instantiate (image_instance=290807504, instantiator=294367528, 
    pointer_fg=<value optimized out>, pointer_bg=<value optimized out>, dest_mask=111, domain=294991480)
    at glyphs-eimage.c:1041
#7  0x10155684 in instantiate_image_instantiator (governing_domain=273208400, domain=294991480, 
    instantiator=294367528, pointer_fg=2, pointer_bg=1208397984, dest_mask=111, glyph=<value optimized out>)
    at glyphs.c:776
#8  0x10158a00 in image_instantiate (specifier=<value optimized out>, matchspec=<value optimized out>, 
    domain=294991480, instantiator=294367528, depth=<value optimized out>) at glyphs.c:3259
#9  0x100953fc in call_with_suspended_errors_1 (opaque_arg=<value optimized out>) at eval.c:2113
#10 0x10093d30 in internal_catch (tag=<value optimized out>, func=0x10095120 <call_with_suspended_errors_1>, 
    arg=272270960, threw=0xbf8204b8) at eval.c:1318
#11 0x1009c774 in call_with_suspended_errors (fun=0x10158570 <image_instantiate>, retval=1208170752, 
    class=1208397984, errb=Cannot access memory at address 0x0
) at eval.c:2205
#12 0x101eb83c in specifier_instance_from_inst_list (specifier=291096976, matchspec=1208170752, 
    domain=294991480, inst_list=291477184, errb=
      {really_unlikely_name_to_have_accidentally_in_a_non_errb_structure = 42}, no_quit=<value optimized out>, 
    depth=3) at specifier.c:2510
#13 0x101ec094 in specifier_instance (specifier=291096976, matchspec=1208170752, domain=294991480, errb=
      {really_unlikely_name_to_have_accidentally_in_a_non_errb_structure = 42}, no_quit=1, no_fallback=0, 
    depth=3) at specifier.c:2625
---Type <return> to continue, or q <return> to quit---
#14 0x1014df94 in glyph_image_instance (glyph=291896744, domain=294991480, errb=
      {really_unlikely_name_to_have_accidentally_in_a_non_errb_structure = 42}, no_quit=1) at glyphs.c:3855
#15 0x1014e38c in invalidate_glyph_geometry_maybe (glyph_or_ii=291896744, w=0x11953678) at glyphs.c:2117
#16 0x101b3de0 in add_glyph_rune (data=0xbf820794, gb=0x11555f70, pos_type=1, allow_cursor=0, cachel=0x0)
    at redisplay.c:1671
#17 0x101b493c in add_glyph_runes (data=0xbf820794, pos_type=1) at redisplay.c:1963
#18 0x101bbb64 in generate_display_line (w=0x11953678, dl=0xbf8208d4, bounds=<value optimized out>, 
    start_pos=1, prop=0xbf8208a8, type=<value optimized out>) at redisplay.c:2318
#19 0x101bf7b0 in regenerate_window (w=0x11953678, start_pos=1, point=<value optimized out>, type=1)
    at redisplay.c:5367
#20 0x101c5f9c in redisplay_window (window=294991480, skip_selected=<value optimized out>) at redisplay.c:6157
#21 0x101c6f4c in redisplay_windows (window=294991480, skip_selected=1) at redisplay.c:6421
#22 0x101c5d6c in redisplay_window (window=294990440, skip_selected=1) at redisplay.c:6051
#23 0x101c6f4c in redisplay_windows (window=294990440, skip_selected=1) at redisplay.c:6421
#24 0x101c70c4 in redisplay_frame (f=0x10580aa0, preemption_check=0) at redisplay.c:6598
#25 0x101c743c in redisplay_device (d=0x1048d450, automatic=<value optimized out>) at redisplay.c:6679
#26 0x101c7fdc in redisplay () at redisplay.c:6766
#27 0x10106144 in Fnext_event (event=275368836, prompt=<value optimized out>) at event-stream.c:2179
#28 0x1006bcfc in Fcommand_loop_1 () at cmdloop.c:574
#29 0x1009cb8c in condition_case_1 (handlers=<value optimized out>, bfun=0x1006bdd0 <command_loop_1>, 
    barg=1208397984, hfun=0x1006c340 <cmd_error>, harg=1208397984) at eval.c:1652
#30 0x1006c2e8 in command_loop_2 (dummy=<value optimized out>) at cmdloop.c:256
#31 0x10093d30 in internal_catch (tag=<value optimized out>, func=0x1006c270 <command_loop_2>, arg=1208397984, 
    threw=0x0) at eval.c:1318
#32 0x1006cb48 in initial_command_loop (load_me=<value optimized out>) at cmdloop.c:305
#33 0x1008fef8 in xemacs_21_4_21_powerpc_unknown_linux (argc=1, argv=0xbf821594, envp=<value optimized out>, 
---Type <return> to continue, or q <return> to quit---
    restart=0) at emacs.c:2460
#34 0x100908f4 in main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>)
    at emacs.c:2829
(gdb) quit
The program is running.  Exit anyway? (y or n) y
$ ls *core*
ls: cannot access *core*: No such file or directory
$ 

Does that help?


  Best regards,

     Adam

-- 
 "The unavoidable price of reliability is simplicity"         Adam Sjøgren
                                                         asjo at koldfront.dk



More information about the XEmacs-Beta mailing list