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

More precise fault info ...



Hi guys,

I've Debian with GCC 2.95.1 and I've build glibc 2.1.2.
It seems that all programs using c++ iostream got crashed.
This is a simple prg that crashes in my configuration:


#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>


int main()
{
    cout << "\"";

    int p = 0;

    int c;
    while ((c = cin.get()) != EOF)
    {
	if (p > 0 && p % 16 == 0)
	    cout << "\"\n\"";

	cout << "\\" << oct << setw(3) << setfill('0') << c;

	p++;
    }

    cout << "\"\n";

    return 0;
}

This is the strace result :


execve("./ss", ["./ss"], [/* 26 vars */]) = 0
brk(0)                                  = 0x8058898
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
mmap(0, 19549, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40015000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 118552, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001a000
mprotect(0x40036000, 3864, PROT_NONE)   = 0
mmap(0x40036000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1b000) = 0x40036000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
fstat(3, {st_mode=0, st_size=0, ...})   = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 925116, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40037000
mprotect(0x40112000, 28092, PROT_NONE)  = 0
mmap(0x40112000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xda000) = 0x40112000
mmap(0x40116000, 11708, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40116000
close(3)                                = 0
munmap(0x40015000, 19549)               = 0
personality(PER_LINUX)                  = 0
getpid()                                = 16296
brk(0)                                  = 0x8058898
brk(0x8058a38)                          = 0x8058a38
brk(0x8059000)                          = 0x8059000
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++


This is ldd result :

libm.so.6 => /lib/libm.so.6 (0x4001a000)
libc.so.6 => /lib/libc.so.6 (0x40037000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

This is gdb stack backtrace :

(gdb) bt
#0  0x400842c0 in __overflow () from /lib/libc.so.6
#1  0x40083d9e in _IO_new_file_xsputn () from /lib/libc.so.6
#2  0x804ebbe in filebuf::xsputn (this=0x8054920, s=0x8053348 "\"", n=1)
    at /home/davide/work/gcc-2.95/libio/filebuf.cc:205
#3  0x804c129 in ostream::operator<< (this=0x8054a20, s=0x8053348 "\"")
    at /home/davide/work/gcc-2.95/libio/iostream.cc:835
#4  0x804a368 in main ()
#5  0x4004f5d9 in __libc_start_main () from /lib/libc.so.6
(gdb) 


This is gdb disassemble :


Dump of assembler code for function __overflow:
0x40084298 <__overflow>:	push   %ebp
0x40084299 <__overflow+1>:	mov    %esp,%ebp
0x4008429b <__overflow+3>:	sub    $0x14,%esp
0x4008429e <__overflow+6>:	push   %ebx
0x4008429f <__overflow+7>:	call   0x40084294 <_IO_free_backup_area+84>
0x400842a4 <__overflow+12>:	add    $0x9067c,%ebx
0x400842aa <__overflow+18>:	mov    0x8(%ebp),%edx
0x400842ad <__overflow+21>:	movsbl 0x46(%edx),%eax
0x400842b1 <__overflow+25>:	mov    0xc(%ebp),%ecx
0x400842b4 <__overflow+28>:	add    $0xfffffff8,%esp
0x400842b7 <__overflow+31>:	mov    0x94(%edx,%eax,1),%eax
0x400842be <__overflow+38>:	push   %ecx
0x400842bf <__overflow+39>:	push   %edx

0x400842c0 <__overflow+40>:	mov    0xc(%eax),%eax  <<<< Here's the segfault %eax = 0

0x400842c3 <__overflow+43>:	call   *%eax
0x400842c5 <__overflow+45>:	mov    0xffffffe8(%ebp),%ebx
0x400842c8 <__overflow+48>:	mov    %ebp,%esp
0x400842ca <__overflow+50>:	pop    %ebp
0x400842cb <__overflow+51>:	ret    
0x400842cc <__overflow+52>:	mov    (%esp,1),%ebx
0x400842cf <__overflow+55>:	ret    
End of assembler dump.


Cheers,
    Davide.

--    
"Debian, the freedom in freedom."



Reply to: