public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/29626] New: Segfault when disassembling ARM code
@ 2022-09-28 11:59 marian.buschsieweke at ovgu dot de
  2022-09-28 11:59 ` [Bug gdb/29626] " marian.buschsieweke at ovgu dot de
  0 siblings, 1 reply; 2+ messages in thread
From: marian.buschsieweke at ovgu dot de @ 2022-09-28 11:59 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=29626

            Bug ID: 29626
           Summary: Segfault when disassembling ARM code
           Product: gdb
           Version: 12.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: marian.buschsieweke at ovgu dot de
  Target Milestone: ---

Created attachment 14361
  --> https://sourceware.org/bugzilla/attachment.cgi?id=14361&action=edit
potential fix

Hi,

while debugging code on a ARM Cortex M7 MCU (STM32F767ZI) via OpenOCD I
experience random crashes in the tui with `layout split`. This is the
backtrace:

#0  __restore_sigs (set=set@entry=0x7ffc44288520) at
./arch/x86_64/syscall_arch.h:40
#1  0x00007f18d21fa561 in raise (sig=<optimized out>) at src/signal/raise.c:11
#2  0x000056448ea7853d in handle_fatal_signal (sig=sig@entry=11) at
../../gdb/event-top.c:927
#3  0x000056448ea78572 in handle_sigsegv (sig=11) at ../../gdb/event-top.c:977
#4  <signal handler called>
#5  0x000056448ed17eb5 in mapping_symbol_for_insn (pc=pc@entry=134224510,
info=info@entry=0x7ffc44288e60, 
    map_symbol=map_symbol@entry=0x7ffc44288d48) at
../../opcodes/arm-dis.c:11868
#6  0x000056448ed1893d in find_ifthen_state (little=true, info=0x7ffc44288e60,
pc=134224518) at ../../opcodes/arm-dis.c:11743
#7  print_insn (pc=134224518, info=0x7ffc44288e60, little=<optimized out>) at
../../opcodes/arm-dis.c:12284
#8  0x000056448ea2bc42 in gdb_disassembler::print_insn
(this=this@entry=0x7ffc44288e58, memaddr=memaddr@entry=134224518, 
    branch_delay_insns=branch_delay_insns@entry=0x0) at ../../gdb/disasm.h:58
#9  0x000056448ea2c4af in gdb_print_insn (gdbarch=gdbarch@entry=0x7f18d13bbff0,
memaddr=memaddr@entry=134224518, 
    stream=stream@entry=0x7ffc44289068,
branch_delay_insns=branch_delay_insns@entry=0x0) at ../../gdb/disasm.c:936
#10 0x000056448ecc7720 in tui_disassemble (gdbarch=0x7f18d13bbff0,
asm_lines=..., pc=134224518, count=count@entry=24, 
    addr_size=addr_size@entry=0x7ffc44289180) at ../../gdb/tui/tui-disasm.c:120
#11 0x000056448ecc7f62 in tui_disasm_window::set_contents (this=0x7f18d1149d90,
arch=<optimized out>, sal=...)
    at ../../gdb/tui/tui-disasm.c:343
#12 0x000056448ecd7b4f in tui_source_window_base::update_source_window_as_is
(this=0x7f18d1149d90, gdbarch=<optimized out>, sal=...)
    at ../../gdb/tui/tui-winsource.c:167
#13 0x000056448ecd7c1b in tui_update_source_windows_with_addr
(gdbarch=0x7f18d13bbff0, addr=<optimized out>)
    at ../../gdb/tui/tui-winsource.c:190
#14 0x000056448ecd0ca2 in tui_apply_current_layout () at
../../gdb/tui/tui-layout.c:113
#15 0x000056448e9e9977 in cmd_func (cmd=0x7f18d19aea50, args=0x0, from_tty=1)
at ../../gdb/cli/cli-decode.c:2514
#16 0x000056448ecb8804 in execute_command (p=<optimized out>,
p@entry=0x7f18d04c3b10 "layout split", from_tty=1) at ../../gdb/top.c:702
#17 0x000056448ea78984 in command_handler (command=0x7f18d04c3b10 "layout
split") at ../../gdb/event-top.c:597
#18 0x000056448ea79753 in command_line_handler (rl=...) at
../../gdb/event-top.c:800
#19 0x000056448ea792a0 in gdb_rl_callback_handler (rl=0x7f18d04c3ab0 "layout
split") at ../../gdb/event-top.c:229
#20 0x00007f18d21982d5 in rl_callback_read_char () from
/usr/lib/libreadline.so.8
#21 0x000056448ea79356 in gdb_rl_callback_read_char_wrapper_noexcept () at
../../gdb/event-top.c:187
#22 0x000056448ea793ec in gdb_rl_callback_read_char_wrapper
(client_data=<optimized out>) at ../../gdb/event-top.c:204
#23 0x000056448ea78426 in stdin_event_handler (error=<optimized out>,
client_data=0x7f18d1e35e90) at ../../gdb/event-top.c:524
#24 0x000056448f06ca72 in gdb_wait_for_event (block=<optimized out>) at
../../gdbsupport/event-loop.cc:725
#25 gdb_wait_for_event (block=<optimized out>) at
../../gdbsupport/event-loop.cc:588
#26 0x000056448f06cdf0 in gdb_do_one_event () at
../../gdbsupport/event-loop.cc:237
#27 0x000056448eb192cc in start_event_loop () at ../../gdb/main.c:421
#28 captured_command_loop () at ../../gdb/main.c:481
#29 0x000056448eb1aa12 in captured_main (data=data@entry=0x7ffc44289780) at
../../gdb/main.c:1351
#30 gdb_main (args=args@entry=0x7ffc442897b0) at ../../gdb/main.c:1366
#31 0x000056448e91ccc0 in main (argc=<optimized out>, argv=<optimized out>) at
../../gdb/gdb.c:32

I experience the crash on certain locations, e.g. when browsing the disassembly
of picolibc's vfprintf implementation. But I experienced similar crashes in
other places as well.

The attached patch is a naive fix that prevents the NULL pointer dereferencing
triggering the segfault. I didn't really read the code though, so maybe this is
only a symptom of an deeper issue. In any case, the fix does seem to solve the
immediate crashes and the disassembly does match what I get from
`arm-none-eabi-objdump`.

Kind regards,
Marian

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug gdb/29626] Segfault when disassembling ARM code
  2022-09-28 11:59 [Bug gdb/29626] New: Segfault when disassembling ARM code marian.buschsieweke at ovgu dot de
@ 2022-09-28 11:59 ` marian.buschsieweke at ovgu dot de
  0 siblings, 0 replies; 2+ messages in thread
From: marian.buschsieweke at ovgu dot de @ 2022-09-28 11:59 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=29626

Marian Buschsieweke <marian.buschsieweke at ovgu dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marian.buschsieweke at ovgu dot de

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-28 11:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-28 11:59 [Bug gdb/29626] New: Segfault when disassembling ARM code marian.buschsieweke at ovgu dot de
2022-09-28 11:59 ` [Bug gdb/29626] " marian.buschsieweke at ovgu dot de

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).