From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29731 invoked by alias); 9 Nov 2005 13:05:09 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 29719 invoked by uid 22791); 9 Nov 2005 13:05:05 -0000 Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Wed, 09 Nov 2005 13:05:05 +0000 Received: from Relay2.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id A8ECB1D104 for ; Wed, 9 Nov 2005 14:05:01 +0100 (CET) Date: Wed, 09 Nov 2005 13:05:00 -0000 From: Olaf Hering To: gdb@sourceware.org Subject: trouble with gdb backtraces on ppc with gcc4 Message-ID: <20051109130501.GA16450@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-DOS: I got your 640K Real Mode Right Here Buddy! X-Homeland-Security: You are not supposed to read this line! You are a terrorist! User-Agent: Mutt und vi sind doch schneller als Notes (und GroupWise) X-SW-Source: 2005-11/txt/msg00196.txt.bz2 the backtraces in gdb 6.3 and also in gdb-mainline are usually broken in openSuSE. How does gdb generate them? I guess gdb needs to deal with the gcc generated debug info. It seems this fails in many cases, as a result I get a loop: main.c #include extern int t1(int); extern int t2(int); int main(void) { int i = 0; while (i++) i = t1(i) * t2(i); printf("i %d\n", i); return 0; } t1.c #include int t1(int i) { printf("i %d\n", i); return i + 1; } t2.c int t2(int i) { return i + 2; } gcc -O1 -g -c *.c -Wall && gcc -o t *.o && /usr/bin/gdb t r ... i -1525098859 i -250087813 i -1598913907 i -255915693 i 155071 Program received signal SIGINT, Interrupt. 0x0ff6443c in __write_nocancel () from /lib/tls/libc.so.6 (gdb) bt #0 0x0ff6443c in __write_nocancel () from /lib/tls/libc.so.6 #1 0x0ff141c4 in _IO_new_file_write () from /lib/tls/libc.so.6 #2 0x0ff126e0 in new_do_write () from /lib/tls/libc.so.6 #3 0x0ff12898 in _IO_new_do_write () from /lib/tls/libc.so.6 #4 0x0ff13424 in _IO_new_file_overflow () from /lib/tls/libc.so.6 #5 0x0ff143f4 in _IO_new_file_xsputn () from /lib/tls/libc.so.6 #6 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #7 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #8 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #9 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #10 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #11 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 #12 0x0feeb990 in vfprintf () from /lib/tls/libc.so.6 Previous frame inner to this frame (corrupt stack?) (gdb) SLES9 does a better job: ... i -2042139181 i -1862425 Program received signal SIGINT, Interrupt. 0x0ff6dc10 in __write_nocancel () from /lib/tls/libc.so.6 (gdb) bt #0 0x0ff6dc10 in __write_nocancel () from /lib/tls/libc.so.6 #1 0x0ff20ee4 in _IO_new_file_write () from /lib/tls/libc.so.6 #2 0x0ff20b34 in new_do_write () from /lib/tls/libc.so.6 #3 0x0ff20e68 in _IO_new_do_write () from /lib/tls/libc.so.6 #4 0x0ff218e8 in _IO_new_file_overflow () from /lib/tls/libc.so.6 #5 0x0ff20db8 in _IO_new_file_xsputn () from /lib/tls/libc.so.6 #6 0x0fefc8f8 in vfprintf () from /lib/tls/libc.so.6 #7 0x0ff0361c in printf () from /lib/tls/libc.so.6 #8 0x100004cc in t1 (i=-1862425243) at t1.c:4 #9 0x10000458 in main () at main.c:8 -- short story of a lazy sysadmin: alias appserv=wotan