Another faults ...
Hi guys,
I've got another bug using glibc-2.1.2, and as the previous one, it fall in the
C++ iostream code.
The program is the famous debugger DDD that I've succesfully built and run with
glibc-2.0.7, but now, after I've installed glibc-2.1.2 it gives a segmentation fault.
I'm using GCC-2.95.1 on a Debian system ( always works fine until the glibc-2.1.2 ).
This is ldd output :
pcdavide:~$ ldd /usr/bin/ddd
libXm.so.1 => /usr/lib/libXm.so.1 (0x4001a000)
libXp.so.6 => /usr/X11R6/lib/libXp.so.6 (0x40173000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x4017a000)
libXaw.so.6 => /usr/X11R6/lib/Xaw3d/libXaw.so.6 (0x40189000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x401dc000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401ed000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x401f8000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4023b000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40243000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40258000)
libncurses.so.4 => /lib/libncurses.so.4 (0x402ef000)
libm.so.6 => /lib/libm.so.6 (0x4032f000)
libc.so.6 => /lib/libc.so.6 (0x4034c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
This is the gdb stack trace :
(gdb) bt
#0 0x83b39a1 in ?? ()
#1 0x403968cc in putc () from /lib/libc.so.6
#2 0x823c510 in ostream::operator<< (this=0xbfffe314, c=45 '-')
at /home/davide/work/gcc-2.95/libio/streambuf.h:395
#3 0x806ed2e in _cook (raw=@0x840bbf0, for_postscript=false) at cook.C:111
#4 0x8118026 in setup_vsl_fonts (ad=@0x83a20c0) at cook.h:44
#5 0x8118e66 in setup_fonts (ad=@0x83a20c0, db=0x83af530) at fonts.C:485
#6 0x8051fd0 in main (argc=1, argv=0xbffffcb4) at ddd.C:1982
This is the disassemble of 0x403968cc :
0x403968c0 <putc+92>: mov %edi,%edx
0x403968c2 <putc+94>: movzbl %dl,%eax
0x403968c5 <putc+97>: push %eax
0x403968c6 <putc+98>: push %esi
0x403968c7 <putc+99>: call 0x40362c4c <signgam+93496>
0x403968cc <putc+104>: add $0x10,%esp
0x403968cf <putc+107>: mov %eax,%edi
0x403968d1 <putc+109>: jmp 0x403968dd <putc+121>
0x403968d3 <putc+111>: mov %edi,%eax
This is the disassemble of 0x40362c4c :
0x40362c44 <signgam+93488>: add (%eax),%al
0x40362c46 <signgam+93490>: add %ch,%cl
0x40362c48 <signgam+93492>: xor %bh,%dl
0x40362c4a <signgam+93494>: (bad)
0x40362c4b <signgam+93495>: (bad)
0x40362c4c <signgam+93496>: jmp *0x17c(%ebx)
0x40362c52 <signgam+93502>: push $0x2e0
0x40362c57 <signgam+93507>: jmp 0x4036267c <signgam+92008>
0x40362c5c <signgam+93512>: jmp *0x180(%ebx)
This is the disassemble of 0x83b39a1 :
0x83b39a1: add %al,(%ecx)
0x83b39a3: add %al,(%eax)
0x83b39a5: add %al,(%eax)
0x83b39a7: add %al,(%eax)
0x83b39a9: add %al,(%eax)
that seems contain no code !
This is what occur with xosview :
pcdavide:~$ ldd /usr/X11R6/bin/xosview
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4001a000)
libstdc++.so.2.7.2 => /usr/lib/libstdc++.so.2.7.2 (0x400b1000)
libc.so.6 => /lib/libc.so.6 (0x400ee000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libm.so.6 => /lib/libm.so.6 (0x401d1000)
(gdb) bt
#0 0x0 in ?? ()
#1 0x400cfc78 in _IO_doallocbuf () from /usr/lib/libstdc++.so.2.7.2
#2 0x4013cd1c in _IO_old_file_seekoff () from /lib/libc.so.6
#3 0x400cfbe8 in __uflow () from /usr/lib/libstdc++.so.2.7.2
#4 0x40137401 in _IO_getline_info () from /lib/libc.so.6
#5 0x401372e6 in _IO_getline () from /lib/libc.so.6
#6 0x4013699d in fgets () from /lib/libc.so.6
#7 0x4009157e in resolve_name () from /usr/X11R6/lib/libX11.so.6
#8 0x40091a36 in _XlcResolveLocaleName () from /usr/X11R6/lib/libX11.so.6
#9 0x40098599 in initialize () from /usr/X11R6/lib/libX11.so.6
#10 0x4009825d in _XlcCreateLC () from /usr/X11R6/lib/libX11.so.6
#11 0x4008fa0a in _XlcDefaultLoader () from /usr/X11R6/lib/libX11.so.6
#12 0x4005ef10 in _XOpenLC () from /usr/X11R6/lib/libX11.so.6
#13 0x4005f033 in _XrmInitParseInfo () from /usr/X11R6/lib/libX11.so.6
#14 0x4004bd40 in NewDatabase () from /usr/X11R6/lib/libX11.so.6
#15 0x4004d7da in XrmGetStringDatabase () from /usr/X11R6/lib/libX11.so.6
#16 0x804c8eb in _start ()
#17 0x804e79a in _start ()
#18 0x804f2cd in _start ()
(gdb) disassemble 0x400cfc78
Dump of assembler code for function _IO_doallocbuf:
0x400cfc68 <_IO_doallocbuf+24>: jne 0x400cfc90 <_IO_doallocbuf+64>
0x400cfc6a <_IO_doallocbuf+26>: testb $0x2,(%esi)
0x400cfc6d <_IO_doallocbuf+29>: jne 0x400cfc80 <_IO_doallocbuf+48>
0x400cfc6f <_IO_doallocbuf+31>: mov 0x4c(%esi),%eax
0x400cfc72 <_IO_doallocbuf+34>: push %esi
0x400cfc73 <_IO_doallocbuf+35>: mov 0x64(%eax),%eax
0x400cfc76 <_IO_doallocbuf+38>: call *%eax
0x400cfc78 <_IO_doallocbuf+40>: add $0x4,%esp
0x400cfc7b <_IO_doallocbuf+43>: cmp $0xffffffff,%eax
0x400cfc7e <_IO_doallocbuf+46>: jne 0x400cfc90 <_IO_doallocbuf+64>
0x400cfc80 <_IO_doallocbuf+48>: push $0x0
Another C++ library bug.
The same things appens after the installation of libstdc++2.9.6 .
Cheers,
Davide.
--
"Debian, the freedom in freedom."
Reply to: