This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Crash in gdb
- From: Dmitry Smirnov <divis1969 at mail dot ru>
- To: gdb at sourceware dot org
- Date: Wed, 10 Jun 2009 20:31:32 +0400
- Subject: Re: Crash in gdb
- Reply-to: Dmitry Smirnov <divis1969 at mail dot ru>
I had compiled GDB with -O0 and found the following:
While reading some function info (read_func_scope), GDB tries to inherit some abstract dies (inherit_abstract_dies)
When handling children of this die (function), it follows to another compilation unit.
The first child is a "void" with DW_TAG_base_type.
process_die() attempts to create a new symbol using that "another compilation unit".
This process crashes, since compilation unit does not have cu->list_in_scope (it is NULL).
What could be wrong with that compilation unit? When list_in_scope is initialized with non-NULL?
Perhaps toolchain (ADS 1.2) does not follow some DWARF specs, but maybe I could just find some fix for it...
Here is the stack (it is more informative, since I was turned -O0
GDB Cygwin GCC (1) [C/C++ Application]
Cygwin gdb Debugger (09.06.09 19:24) (Suspended)
Thread [1] (Suspended: Breakpoint hit.)
57 add_symbol_to_list() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\buildsym.c:132 0x0054ade4
56 new_symbol() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:7888 0x0050b078
55 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2867 0x005019b5
54 inherit_abstract_dies() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:3181
0x005023b3
53 read_func_scope() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:3247 0x005025ee
52 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2828 0x00501941
51 read_file_scope() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:3051 0x00501f45
50 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2825 0x0050192a
49 process_full_comp_unit() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2792
0x00501834
48 process_queue() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2591 0x005012da
47 psymtab_to_symtab_1() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2671 0x005014ce
46 dwarf2_psymtab_to_symtab() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2544
0x005011f2
45 psymtab_to_symtab() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symfile.c:290 0x0040463e
44 lookup_symbol_aux_psymtabs() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1540
0x0046d6b4
43 lookup_symbol_global() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1660 0x0046d93b
42 basic_lookup_symbol_nonlocal() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1617
0x0046d83c
41 lookup_symbol_aux() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1345 0x0046d223
40 lookup_symbol_in_language() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1254
0x0046d03c
39 lookup_symbol() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1268 0x0046d081
38 find_imps() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\objc-lang.c:1319 0x004d9402
37 decode_objc() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\linespec.c:1129 0x004ab945
36 decode_line_1() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\linespec.c:746 0x004ab185
35 parse_breakpoint_sals() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5556
0x0044c6b2
34 do_captured_parse_breakpoint() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5592
0x0044c7c2
33 catch_exception() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:462 0x004142a8
32 break_command_really() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5709
0x0044cac3
31 set_breakpoint() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5887 0x0044cfeb
30 mi_cmd_break_insert() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-cmd-break.c:156
0x0054abbb
29 mi_cmd_execute() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-main.c:1369 0x00547626
28 captured_mi_execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-main.c:1176
0x00546fb6
27 catch_exception() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:462 0x004142a8
26 mi_execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-main.c:1270 0x00547227
25 mi_execute_command_wrapper() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-interp.c:251
0x004b65d1
24 mi_interpreter_exec() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-interp.c:164
0x004b6439
23 interp_exec() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\interps.c:326 0x0041ef52
22 interpreter_exec_cmd() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\interps.c:403 0x0041f17f
21 do_cfunc() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\cli\cli-decode.c:67 0x0043285b
20 cmd_func() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\cli\cli-decode.c:1734 0x00434f12
19 execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\top.c:442 0x00402767
18 command_handler() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:511 0x0042787d
17 command_line_handler() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:735 0x00427e96
16 rl_callback_read_char() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\readline\callback.c:205
0x005c25b3
15 rl_callback_read_char_wrapper() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:178
0x00426fcb
14 stdin_event_handler() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:433 0x00427747
13 handle_file_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:812 0x00443ed7
12 process_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:394 0x004436bd
11 gdb_do_one_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:459 0x00443799
10 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x004144c7
9 start_event_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:483 0x004437dc
8 cli_command_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:211 0x004270f4
7 current_interp_command_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\interps.c:293
0x0041eec3
6 captured_command_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:226 0x004012e9
5 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x004144c7
4 captured_main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:902 0x0040223f
3 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x004144c7
2 gdb_main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:911 0x00402275
1 main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\gdb.c:33 0x004010ba
Thread [2] (Suspended)
gdb (09.06.09 19:24)
D:\Install\GDB\gdb-6.8.50.20090603\gdb\gdb.exe (09.06.09 19:24)
-----Original Message-----
From: Dmitry Smirnov <divis1969@mail.ru>
To: Richard Earnshaw <member@buzzard.freeserve.co.uk>
Date: Mon, 08 Jun 2009 20:18:54 +0400
Subject: Re[2]: Crash in gdb
> yes it is true, but should it just crash in this case?
>
> In fact, previous gdb vesrions are handling this elf very good despite the fact that version is not supported (I'm using
ADS
> 1.2 toolchain)
>
> Below is the stack I've got while debugging in Eclipse CDT.
> It crashes at buildsym.c:132
> if (*listhead == NULL || (*listhead)->nsyms == PENDINGSIZE)
>
> In my case listhead is NULL.
> Whethere NULL is invalid value and problem is somewhere before or this line need additional check, that is the question for
> the moment... Any help is appreciated.
>
> Thread [1] (Suspended: Signal 'SIGSEGV' received. Description: Segmentation fault.)
> 43 add_symbol_to_list() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\buildsym.c:132 0x0051ca1d
> 42 new_symbol() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:7913 0x004e8c9c
> 41 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2893 0x004ea2e3
> 40 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:3181 0x004eb449
> 39 process_die() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:3051 0x004ead00
> 38 psymtab_to_symtab_1() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2792 0x004ebbc2
> 37 dwarf2_psymtab_to_symtab() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\dwarf2read.c:2544 0x004ebdad
> 36 psymtab_to_symtab() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symfile.c:290 0x00404296
> 35 lookup_symbol_aux_psymtabs() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1540 0x00464f68
> 34 lookup_symbol_in_language() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1345 0x00465414
> 33 lookup_symbol() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\symtab.c:1268 0x00465542
> 32 find_imps() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\objc-lang.c:1319 0x004c1535
> 31 decode_objc() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\linespec.c:1129 0x0049a968
> 30 decode_line_1() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\linespec.c:746 0x0049b796
> 29 do_captured_parse_breakpoint() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5556 0x004447d0
> 28 catch_exception() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:462 0x00412142
> 27 break_command_really() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5709 0x004466a8
> 26 set_breakpoint() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\breakpoint.c:5887 0x004471b8
> 25 mi_cmd_break_insert() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-cmd-break.c:162 0x0051c7f9
> 24 captured_mi_execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-main.c:1369 0x00519c37
> 23 catch_exception() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:462 0x00412142
> 22 mi_execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-main.c:1270 0x00519499
> 21 mi_execute_command_wrapper() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-interp.c:251 0x004a4729
> 20 mi_interpreter_exec() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\mi\mi-interp.c:164 0x004a4773
> 19 interp_exec() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\interps.c:326 0x0041c78b
> 18 interpreter_exec_cmd() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\interps.c:403 0x0041c869
> 17 execute_command() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\top.c:442 0x00402507
> 16 command_handler() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:511 0x00424b0f
> 15 command_line_handler() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:741 0x00424e3f
> 14 rl_callback_read_char() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\readline\callback.c:205 0x0057b065
> 13 rl_callback_read_char_wrapper() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:178 0x004244bb
> 12 handle_file_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:812 0x0043e93a
> 11 process_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:394 0x0043e38b
> 10 gdb_do_one_event() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:459 0x0043f05c
> 9 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x0041238b
> 8 start_event_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-loop.c:483 0x0043e3f4
> 7 cli_command_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\event-top.c:211 0x004246ed
> 6 captured_command_loop() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:226 0x004012ab
> 5 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x0041238b
> 4 captured_main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:902 0x00401a24
> 3 catch_errors() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\exceptions.c:510 0x0041238b
> 2 gdb_main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\main.c:911 0x00402203
> 1 main() \cygdrive\d\Install\GDB\gdb-6.8.50.20090603\gdb\gdb.c:33 0x0040109b
>
>
> -----Original Message-----
> From: Richard Earnshaw <member@buzzard.freeserve.co.uk>
> To: Dmitry Smirnov <divis1969@mail.ru>, gdb@sourceware.org
> Date: Mon, 8 Jun 2009 17:36:12 +0200 (CEST)
> Subject: RE: Crash in gdb
>
> >
> > > I had encountered a problem with running gdb-6.8.50.20090603.
> > > It is configured as ./configure --target arm-elf --with-x=no --disable-tui
> > > I would like to note that there no such a problem with gdb-6.8.50.20090412 or gdb-6.8.50.20080630.
> >
> > > warning: unknown ARM EABI version 0x2000000
> >
> > This suggests you are using an old version of ARM's toolchain. That's not supported in GDB.
> >
> > R.
> >
>
>