From owner-freebsd-current@FreeBSD.ORG Tue Jan 9 16:45:55 2007 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 92C2D16A403 for ; Tue, 9 Jan 2007 16:45:55 +0000 (UTC) (envelope-from doublef-ctm@yandex.ru) Received: from smtp1.yandex.ru (smtp1.yandex.ru [213.180.223.87]) by mx1.freebsd.org (Postfix) with ESMTP id E0E4E13C457 for ; Tue, 9 Jan 2007 16:45:54 +0000 (UTC) (envelope-from doublef-ctm@yandex.ru) Received: from [83.239.189.155] ([83.239.189.155]:7398 "EHLO shark" smtp-auth: "doublef-ctm" TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S2077222AbXAIQpp (ORCPT ); Tue, 9 Jan 2007 19:45:45 +0300 X-Comment: RFC 2476 MSA function at smtp1.yandex.ru logged sender identity as: doublef-ctm Received: by shark (Postfix, from userid 1000) id 471A617719; Tue, 9 Jan 2007 19:45:22 +0300 (MSK) Date: Tue, 9 Jan 2007 19:45:22 +0300 From: Sergey Zaharchenko To: current@freebsd.org Message-ID: <20070109164522.GA8445@shark.localdomain> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="OgqxwSJOaUobr8KG" Content-Disposition: inline X-Listening-To: Silence User-Agent: Mutt/1.5.11 Cc: Subject: GDB dumping stack frames by address incorrectly? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Jan 2007 16:45:55 -0000 --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello again -current, Looks like I've run into a debugger bug... Consider debugging a simple program: : $ gcc -g -o c c.c : $ gdb c : ... : (gdb) br main : Breakpoint 1 at 0x80484a8: file c.c, line 4. : (gdb) r : Starting program: /home/df/freebsd-bugs/c : Breakpoint 1, main () at c.c:4 : 4 return 0; : (gdb) info frame : Stack level 0, frame at 0xbfbfeb90: : eip =3D 0x80484a8 in main (c.c:4); saved eip 0x80483d6 : source language c. : Arglist at 0xbfbfeb88, args: : Locals at 0xbfbfeb88, Previous frame's sp is 0xbfbfeb90 : Saved registers: : ebp at 0xbfbfeb88, eip at 0xbfbfeb8c Here, everything is normal; notice the frame pointer is 0xbfbfeb90. : (gdb) help frame : Select and print a stack frame. : With no argument, print the selected stack frame. (See also "info frame"). : An argument specifies the frame to select. : It can be a stack frame number or the address of the frame. ^^^^^^^^^^^^^^^^^^^^^^^^^^^ : With argument, nothing is printed if input is coming from : a command file or a user-defined command. After reading the above, one would expect that=20 : (gdb) frame 0xbfbfeb90 would print out the same frame. However, it shows this: : #0 0x00000000 in ?? () Moreover, : (gdb) info frame 0xbfbfeb90 : Stack frame at 0xbfbfeb90: : eip =3D 0x0; saved eip : /src/usr.src/gnu/usr.bin/gdb/libgdb/../../../../contrib/gdb/gdb/dwarf2-fr= ame.c:613: internal-error: dwarf2_frame_cache: Assertion `fde !=3D NULL' fa= iled. : A problem internal to GDB has been detected, : further debugging may prove unreliable. : Quit this debugging session? (y or n) n :=20 : /src/usr.src/gnu/usr.bin/gdb/libgdb/../../../../contrib/gdb/gdb/dwarf2-fr= ame.c:613: internal-error: dwarf2_frame_cache: Assertion `fde !=3D NULL' fa= iled. : A problem internal to GDB has been detected, : further debugging may prove unreliable. : Create a core file of GDB? (y or n) y : (gdb) The program is running. Exit anyway? (y or n) y The stack trace of stock gdb is unlikely to help, but here goes: #0 0x283ad75b in kill () from /lib/libc.so.7 #1 0x283ad6f8 in raise () from /lib/libc.so.7 #2 0x283ac408 in abort () from /lib/libc.so.7 #3 0x080bad56 in query () #4 0x080baef0 in internal_verror () #5 0x080baf14 in internal_error () #6 0x0813690f in dwarf2_frame_base_sniffer () #7 0x08136966 in dwarf2_frame_base_sniffer () #8 0x08084d40 in frame_register_unwind () #9 0x08084f58 in frame_unwind_register () #10 0x0814c242 in i386_register_name () #11 0x08084c60 in frame_pc_unwind () #12 0x080ec048 in parse_frame_specification () #13 0x080c793b in execute_command () #14 0x0808a012 in async_disable_stdin () #15 0x0808a657 in async_disable_stdin () #16 0x28275360 in rl_callback_read_char () from /lib/libreadline.so.6 #17 0x080899ab in _initialize_gdbarch_utils () #18 0x0808b364 in delete_file_handler () #19 0x0808ae1a in gdb_disable_readline () #20 0x0808b5c9 in gdb_do_one_event () #21 0x080c7478 in throw_exception () #22 0x080c75c2 in catch_errors () #23 0x0815508b in _initialize_varobj () #24 0x08071f4a in current_interp_command_loop () #25 0x0807114b in main () I've just tried with -current of around December 2005, and the behavior is the same. Is it intended? --=20 DoubleF No virus detected in this message. Ehrm, wait a minute... /kernel: pid 56921 (antivirus), uid 32000: exited on signal 9 Oh yes, no virus:) --OgqxwSJOaUobr8KG Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.1 (FreeBSD) iD8DBQFFo8ahwo7hT/9lVdwRApIAAJ9n8/U460q7z4zASgKAFMngdN/2OACfZ+vR JjSpUp0YiHRSeaU6hbcV0KY= =tEB2 -----END PGP SIGNATURE----- --OgqxwSJOaUobr8KG--