This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/9631] gdb crash in after "info local" when using public virtual derived class


------- Additional Comments From pedro at codesourcery dot com  2009-01-21 00:13 -------
I can reproduce this with both FSF gdb 6.8, and current mainline.  Here's the
trace on mainline:

#0  0x00000000005d17f0 in gnuv3_baseclass_offset (type=0xbe6810, index=1,
valaddr=0xbf2f60 "�\a@",
    address=140737488347904) at ../../src/gdb/gnu-v3-abi.c:466
#1  0x0000000000460a06 in baseclass_offset (type=0xbe6810, index=1,
valaddr=0xbf2f60 "�\a@", address=140737488347904)
    at ../../src/gdb/cp-abi.c:78
#2  0x00000000005b9fc7 in cp_print_value (type=0xbe6810, real_type=0xbe6810,
valaddr=0xbf2f60 "�\a@", offset=0,
    address=140737488347904, stream=0xbb1ae0, recurse=1, options=0x7fff3ad47640,
dont_print_vb=0x0)
    at ../../src/gdb/cp-valprint.c:375
#3  0x00000000005b9264 in cp_print_value_fields (type=0xbe6810,
real_type=0xbe6810, valaddr=0xbf2f60 "�\a@",
    offset=0, address=140737488347904, stream=0xbb1ae0, recurse=0,
options=0x7fff3ad47640, dont_print_vb=0x0,
    dont_print_statmem=0) at ../../src/gdb/cp-valprint.c:169
#4  0x00000000005b8121 in c_val_print (type=0xbe6810, valaddr=0xbf2f60 "�\a@",
embedded_offset=0,
    address=140737488347904, stream=0xbb1ae0, recurse=0, options=0x7fff3ad47640)
at ../../src/gdb/c-valprint.c:342
#5  0x00000000004ecaa8 in val_print (type=0xbe6810, valaddr=0xbf2f60 "�\a@",
embedded_offset=0,
    address=140737488347904, stream=0xbb1ae0, recurse=0, options=0x7fff3ad47780,
language=0x76bf80)
    at ../../src/gdb/valprint.c:262
#6  0x00000000004ecc09 in common_val_print (val=0xc1e9c0, stream=0xbb1ae0,
recurse=0, options=0x7fff3ad47780,
    language=0x76bf80) at ../../src/gdb/valprint.c:310
#7  0x00000000004f20c4 in print_variable_and_value (name=0xbf6eb0 "iAmTheBug",
var=0xbf6e50, frame=0xb2c230,
    stream=0xbb1ae0, indent=0) at ../../src/gdb/printcmd.c:1754
#8  0x000000000051db8c in print_block_frame_locals (b=0xbf6ee0, frame=0xb2c230,
num_tabs=0, stream=0xbb1ae0)
    at ../../src/gdb/stack.c:1377
#9  0x000000000051dd6e in print_frame_local_vars (frame=0xb2c230, num_tabs=0,
stream=0xbb1ae0)
    at ../../src/gdb/stack.c:1449
#10 0x000000000051de1d in locals_info (args=0x0, from_tty=1) at
../../src/gdb/stack.c:1537
#11 0x000000000049dd34 in do_cfunc (c=0xb1dc00, args=0x0, from_tty=1) at
../../src/gdb/cli/cli-decode.c:67
#12 0x00000000004a0b3e in cmd_func (cmd=0xb1dc00, args=0x0, from_tty=1) at
../../src/gdb/cli/cli-decode.c:1732
#13 0x00000000004587cf in execute_command (p=0xae294c "", from_tty=1) at
../../src/gdb/top.c:449
#14 0x00000000005295a3 in command_handler (command=0xae2940 "info locals ") at
../../src/gdb/event-top.c:514
#15 0x0000000000529c66 in command_line_handler (rl=0xcd3080 "\220N�") at
../../src/gdb/event-top.c:739
#16 0x00000000006177f5 in rl_callback_read_char () at
../../src/readline/callback.c:205
#17 0x0000000000528b55 in rl_callback_read_char_wrapper (client_data=0x0) at
../../src/gdb/event-top.c:178
#18 0x0000000000529469 in stdin_event_handler (error=0, client_data=0x0) at
../../src/gdb/event-top.c:433
#19 0x0000000000527be5 in handle_file_event (data={ptr = 0x0, integer = 0}) at
../../src/gdb/event-loop.c:812
#20 0x0000000000527251 in process_event () at ../../src/gdb/event-loop.c:394
#21 0x0000000000527331 in gdb_do_one_event (data=0x0) at
../../src/gdb/event-loop.c:459
#22 0x0000000000521e07 in catch_errors (func=0x527266 <gdb_do_one_event>,
func_args=0x0, errstring=0x72b20f "",
    mask=6) at ../../src/gdb/exceptions.c:516
#23 0x00000000004b1553 in tui_command_loop (data=0x0) at
../../src/gdb/tui/tui-interp.c:153
#24 0x000000000052242f in current_interp_command_loop () at
../../src/gdb/interps.c:290
#25 0x00000000004509a5 in captured_command_loop (data=0x0) at
../../src/gdb/main.c:99
#26 0x0000000000521e07 in catch_errors (func=0x450994 <captured_command_loop>,
func_args=0x0, errstring=0x711f5d "",
    mask=6) at ../../src/gdb/exceptions.c:516
#27 0x0000000000451a89 in captured_main (data=0x7fff3ad48020) at
../../src/gdb/main.c:837
#28 0x0000000000521e07 in catch_errors (func=0x4509d7 <captured_main>,
func_args=0x7fff3ad48020,
    errstring=0x711f5d "", mask=6) at ../../src/gdb/exceptions.c:516
#29 0x0000000000451abc in gdb_main (args=0x7fff3ad48020) at ../../src/gdb/main.c:846
#30 0x0000000000450990 in main (argc=2, argv=0x7fff3ad48128) at
../../src/gdb/gdb.c:33

The crash happens on the reference to:

466       if (vbasetype_vptr_fieldno >=
467           && TYPE_FIELD_BITPOS (vbasetype, vbasetype_vptr_fieldno) != 0)
468         error (_("Illegal vptr offset in class %s"),
469                TYPE_NAME (vbasetype) ? TYPE_NAME (vbasetype) : "<unknown>");

(gdb) p TYPE_FIELD_BITPOS (vbasetype, vbasetype_vptr_fieldno)
Cannot access memory at address 0x0

(gdb) p vbasetype_vptr_fieldno
$1 = 0

And,

(gdb) p *TYPE_MAIN_TYPE (vbasetype)
$10 = {code = TYPE_CODE_STRUCT, flag_unsigned = 0, flag_nosign = 0, flag_stub =
1, flag_target_stub = 0,
  flag_static = 0, flag_prototyped = 0, flag_incomplete = 0, flag_varargs = 0,
flag_vector = 0,
  flag_stub_supported = 1, flag_nottext = 0, flag_fixed_instance = 0, nfields =
0, vptr_fieldno = -1, name = 0x0,
  tag_name = 0xbe6980 "foo::Base1", objfile = 0xbd6c30, target_type = 0x0,
fields = 0x0, vptr_basetype = 0x0,
  type_specific = {cplus_stuff = 0xade3e0, floatformat = 0xade3e0,
calling_convention = 11396064}}

fields == NULL, and nfields = 0, and flag_stub == 1.


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=9631

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]