---- 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 ----
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 -----
(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.
Looks like a reincarnation of bug 1079. *** This issue has been marked as a duplicate of issue 1079 ***