[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: