digitalmars.D.bugs - [Issue 22905] New: gdb backtrace contains wrong location
- d-bugmail puremagic.com (51/51) Mar 20 2022 https://issues.dlang.org/show_bug.cgi?id=22905
https://issues.dlang.org/show_bug.cgi?id=22905 Issue ID: 22905 Summary: gdb backtrace contains wrong location Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: tim.dlang t-online.de The following example produces a wrong backtrace in gdb: //////////////////// mod_a.d ///////////////////// import mod_b; void main() { funcB(); } //////////////////// mod_b.d ///////////////////// import mod_c; void funcB() { funcC(0); } //////////////////// mod_c.d ///////////////////// void funcC(T)(T param, void delegate() dg = null) { asm { hlt; } } ////////////////////////////////////////////////// The example can be compiled with: dmd -g mod_a.d mod_b.d mod_c.d Running it with gdb allows to show a backtrace for the hlt-instruction: gdb --batch -ex run -ex bt ./mod_a [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. mod_c.funcC!(int).funcC(int, void() delegate) (dg=..., param=0) at ./mod_c.d:5 5 hlt; ./mod_c.d:5 The backtrace contains the wrong location ./mod_c.d:1 for function funcB. Correct would be ./mod_b.d:4. --
Mar 20 2022