Version: 5.0
Platform: i586-pc-sco3.2v5.0.2
Compiler: gcc-2.95.2

I had another segv trouble with print_section_info() in gdb-4.18.  
I have a detailed report on it.  It is unlikely to be interesting to
anybody since 5.0 is released, but I can send it if requested.

This segv is with 5.0.

gdb is run like this: gdb <executable>.  The executable heavily uses
shared libraries.  Then the following commands are passed to gdb.

attach <process running <executable>>

info target

detach

break *<<executable> entry point>

run

info target

SEGV occurs while executing the last command.

gdb backtrace immediately after SEGV is:

--
#0  0x8102a21 in int_vasprintf (result=0x10f94, format=0x811f912 " is %s", 
    args=0x8047308) at ../../gdb-5.0/libiberty/vasprintf.c:101
#1  0x8102aba in vasprintf (result=0x0, 
    format=0x10f94 <Address 0x10f94 out of bounds>, 
    args=0x8047374 "\224\017\001") at ../../gdb-5.0/libiberty/vasprintf.c:131
#2  0x80a2e93 in vfprintf_maybe_filtered (stream=0x10f94, 
    format=0x10f94 <Address 0x10f94 out of bounds>, 
    args=0x10f94 <Address 0x10f94 out of bounds>, filter=69524) at utils.c:2030
#3  0x80a2f0d in vfprintf_filtered (stream=0x0, 
    format=0x10f94 <Address 0x10f94 out of bounds>, 
    args=0x10f94 <Address 0x10f94 out of bounds>) at utils.c:2048
#4  0x80a305c in printf_filtered (
    format=0x10f94 <Address 0x10f94 out of bounds>) at utils.c:2125
#5  0x808f0dc in print_section_info (t=0x815d460, abfd=0x81716a8)
    at ../../gdb-5.0/gdb/exec.c:597
#6  0x808f13e in exec_files_info (t=0x10f94) at ../../gdb-5.0/gdb/exec.c:610
#7  0x808a397 in target_info (args=0x0, from_tty=1)
    at ../../gdb-5.0/gdb/target.c:1105
#8  0x809d65a in execute_command (p=0x815dd2c "", from_tty=1) at top.c:1550
#9  0x8077c0c in command_handler (command=0x815dd28 "") at event-top.c:519
#10 0x80783be in command_line_handler (rl=0x817e000 "\fà\027\b")
    at event-top.c:815
#11 0x800cc3c4 in rl_callback_read_char () at ../../readline-4.1/callback.c:116
#12 0x807724f in rl_callback_read_char_wrapper (client_data=0x0)
    at event-top.c:170
#13 0x8077ae6 in stdin_event_handler (error=0, client_data=0x10f94)
    at event-top.c:426
#14 0x80b6814 in handle_file_event (event_file_desc=69524)
    at ../../gdb-5.0/gdb/event-loop.c:742
#15 0x80b62eb in process_event () at ../../gdb-5.0/gdb/event-loop.c:377
#16 0x80b6329 in gdb_do_one_event (data=0x0)
    at ../../gdb-5.0/gdb/event-loop.c:414
#17 0x809c840 in catch_errors (func=0x80b6300 <gdb_do_one_event>, args=0x0, 
    errstring=0x10f94 <Address 0x10f94 out of bounds>, mask=6) at top.c:619
#18 0x80b6360 in start_event_loop () at ../../gdb-5.0/gdb/event-loop.c:450
#19 0x80773d2 in cli_command_loop () at event-top.c:200
#20 0x804b636 in captured_command_loop (data=0x0)
    at ../../gdb-5.0/gdb/main.c:104
#21 0x809c840 in catch_errors (func=0x804b61c <captured_command_loop>, 
    args=0x0, errstring=0x10f94 <Address 0x10f94 out of bounds>, mask=6)
    at top.c:619
#22 0x804c27b in captured_main (data=0x10f94) at ../../gdb-5.0/gdb/main.c:749
#23 0x809c840 in catch_errors (func=0x804b66c <captured_main>, args=0x8047880, 
    errstring=0x10f94 <Address 0x10f94 out of bounds>, mask=6) at top.c:619
#24 0x804c2a7 in main (argc=69524, argv=0x10f94) at ../../gdb-5.0/gdb/main.c:761
#25 0x804b4bb in _start ()
--

SEGV occurs due to invalid address passed to strlen().  This value
equals 0x10f94 and appears to be stored in

p->the_bfd_section->name

and returned by

bfd_section_name (p->bfd, p->the_bfd_section)

expr in `exec.c' :: print_section_info().  It equals to invalid
`errstring' address that appears in higher stack frames since main().

Reply via email to