Bug 3368 – gdb: cannot list code (sometimes)

Status
RESOLVED
Resolution
DUPLICATE
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Linux
Creation time
2009-10-05T23:24:00Z
Last change time
2015-06-09T01:29:41Z
Keywords
wrong-code
Assigned to
nobody
Creator
echochamber

Comments

Comment #0 by echochamber — 2009-10-05T23:24:58Z
---- cut here ---- % cat -n foo.d 1 import std.stdio; 2 3 void main() 4 { 5 *(cast(ubyte*)0) = 0; // intentional SEGV 6 // writefln("hello"); 7 } % dmd -gc foo.d; /usr/bin/gdb --quiet ./foo (gdb) run Starting program: /home/miura/work/foo [Thread debugging using libthread_db enabled] [New Thread 0xb7dde6f0 (LWP 12300)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7dde6f0 (LWP 12300)] 0x08049239 in _Dmain () at foo.d:5 5 *(cast(ubyte*)0) = 0; // intentional SEGV (gdb) list 1 import std.stdio; 2 3 void main() 4 { 5 *(cast(ubyte*)0) = 0; // intentional SEGV 6 // writefln("hello"); 7 } (gdb) backtrace #0 0x08049239 in _Dmain () at foo.d:5 #1 0x08049514 in _D2rt6dmain24mainUiPPaZi7runMainMFZv () #2 0x0804931d in _D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv () #3 0x08049556 in _D2rt6dmain24mainUiPPaZi6runAllMFZv () #4 0x0804931d in _D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv () #5 0x080492c8 in main () (gdb) ---- cut here ---- Uncomment the line 6, and gdb is now unable to list code: ---- cut here ---- % dmd -gc foo.d; /usr/bin/gdb --quiet ./foo (gdb) run Starting program: /home/miura/work/foo [Thread debugging using libthread_db enabled] [New Thread 0xb7d696f0 (LWP 12311)] Dwarf Error: Cannot find DIE at 0x846 referenced from DIE at 0x165 [in module /home/miura/work/foo] (gdb) list 1 // Written in the D programming language. 2 3 /** 4 Standard I/O functions that extend $(B std.c.stdio). $(B std.c.stdio) 5 is $(D_PARAM public)ally imported when importing $(B std.stdio). 6 7 Macros: 8 WIKI=Phobos/StdStdio 9 10 Copyright: Copyright Digital Mars 2007 - 2009. Dwarf Error: Cannot find DIE at 0x846 referenced from DIE at 0x165 [in module /home/miura/work/foo] (gdb) backtrace Dwarf Error: Cannot find DIE at 0x846 referenced from DIE at 0x165 [in module /home/miura/work/foo] Dwarf Error: Cannot find DIE at 0x846 referenced from DIE at 0x165 [in module /home/miura/work/foo] (gdb) ---- cut here ----
Comment #1 by leandro.lucarella — 2009-10-12T14:28:54Z
I can confirm this using DMD 1.034 and GDB 7.0 with D patches, but here it can never list code. This is the GDB error message: ----- (gdb) run Starting program: /tmp/dmd2/linux/bin/bug3368 [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x08049239 in D main () Current language: auto The current source language is "auto; currently asm". (gdb) list 1 /tmp/cct0i4at.s: No such file or directory. in /tmp/cct0i4at.s -----
Comment #2 by leandro.lucarella — 2009-10-12T16:13:41Z
(In reply to comment #1) > I can confirm this using DMD 1.034 and GDB 7.0 with D patches, but here it can > never list code. This is the GDB error message: > > ----- > (gdb) run > Starting program: /tmp/dmd2/linux/bin/bug3368 > [Thread debugging using libthread_db enabled] > > Program received signal SIGSEGV, Segmentation fault. > 0x08049239 in D main () > Current language: auto > The current source language is "auto; currently asm". > (gdb) list > 1 /tmp/cct0i4at.s: No such file or directory. > in /tmp/cct0i4at.s > ----- Please, ignore this. I forgot to add -gc when compiling. I see the exact same problem reported in the original description, using DMD 2.034 and GDB 7.0 patched with D support. DMD 1.049 works fine.
Comment #3 by leandro.lucarella — 2009-10-12T16:21:55Z
Looks like a reincarnation of bug 1079. *** This issue has been marked as a duplicate of issue 1079 ***