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 ([EMAIL PROTECTED], for_postscript=false) at cook.C:111
#4  0x8118026 in setup_vsl_fonts ([EMAIL PROTECTED]) at cook.h:44
#5  0x8118e66 in setup_fonts ([EMAIL PROTECTED], 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 via email to