public inbox for gdb-prs@sourceware.org help / color / mirror / Atom feed
From: "sean.anderson at seco dot com" <sourceware-bugzilla@sourceware.org> To: gdb-prs@sourceware.org Subject: [Bug gdb/18869] internal-error: inline_frame_this_id: Assertion `frame_id_p (*this_id)' failed. Date: Mon, 21 Feb 2022 23:35:16 +0000 [thread overview] Message-ID: <bug-18869-4717-64qPhWcog4@http.sourceware.org/bugzilla/> (raw) In-Reply-To: <bug-18869-4717@http.sourceware.org/bugzilla/> https://sourceware.org/bugzilla/show_bug.cgi?id=18869 Sean Anderson <sean.anderson at seco dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |sean.anderson at seco dot com --- Comment #12 from Sean Anderson <sean.anderson at seco dot com> --- I ran into this today while debugging U-Boot on aarch64. The real stack is gdb$ x/8ag $sp 0x1001de10: 0x1001de20 0x10000be4 <fsl_lsch2_early_init_f+12> 0x1001de20: 0x1001de30 0x100013d0 <board_early_init_f+12> 0x1001de30: 0x1001de40 0x10000db0 <board_init_f+32> 0x1001de40: 0x100000f0 <save_boot_params_ret+196> 0x10001124 <_main+36> So the problem appears to occur with "artificial" frames. Here's what happens when I try to get a backtrace: gdb$ set debug frame gdb$ tar ext :3333 Remote debugging using :3333 [frame] reinit_frame_cache: generation=4 [frame] reinit_frame_cache: generation=5 [frame] reinit_frame_cache: generation=6 [frame] reinit_frame_cache: generation=7 [frame] reinit_frame_cache: generation=8 [frame] reinit_frame_cache: generation=9 [frame] reinit_frame_cache: generation=10 [frame] frame_id_p: l={!stack,!code,!special} -> 0 [frame] frame_id_p: l={!stack,!code,!special} -> 0 [frame] frame_id_p: l={!stack,!code,!special} -> 0 [frame] create_sentinel_frame: -> {level=-1,type=SENTINEL_FRAME,unwind=0x561f635e3466,pc=<unknown>,id={stack=<sentinel>,!code,special=0x0000000000000000},func=<unknown>} [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] frame_unwind_arch: next_frame=-1 -> aarch64 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<outer>,!code,special=0x0000000000000000} -> 0 [frame] get_prev_frame_raw: -> {level=0,type=<unknown>,unwind=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>} [frame] get_prev_frame_always_1: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=32(pc) [frame] frame_unwind_register_value: -> register=32 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_pc: this_frame=-1 -> 0x10001440 [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=<unknown>,unwind=<unknown>,pc=0x10001440,id=<not computed>,func=<unknown>} // cached [frame] get_prev_frame_always_1: exit [frame] compute_frame_id: enter [frame] compute_frame_id: fi=0 [frame] frame_unwind_find_by_frame: enter [frame] frame_unwind_find_by_frame: this_frame=0 [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_try_unwinder: yes [frame] frame_unwind_find_by_frame: exit [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=0 [frame] get_prev_frame_raw: -> {level=1,type=<unknown>,unwind=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>} [frame] compute_frame_id: enter [frame] compute_frame_id: fi=1 [frame] frame_unwind_find_by_frame: enter [frame] frame_unwind_find_by_frame: this_frame=1 [frame] frame_unwind_arch: next_frame=0 -> aarch64 [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=0, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=32(pc) [frame] frame_unwind_register_value: -> register=32 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> register=32 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_pc: this_frame=0 -> 0x10001440 [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "jit" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "(null)" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "aarch64 stub" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 signal" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "aarch64 prologue" [frame] frame_unwind_try_unwinder: yes [frame] frame_unwind_find_by_frame: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=0, regnum=31(sp) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=31(sp) [frame] frame_unwind_register_value: -> register=31 bytes=[10de011000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> register=31 bytes=[10de011000000000] [frame] frame_unwind_register_value: exit [frame] get_frame_func_if_available: this_frame=1 -> 0x10001410 [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001410,!special} -> 1 [frame] compute_frame_id: -> {stack=0x1001de10,code=0x0000000010001410,!special} [frame] compute_frame_id: exit [frame] get_prev_frame_always_1: exit [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001410,!special} -> 1 [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] compute_frame_id: -> {stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} [frame] compute_frame_id: exit enable_devices_ns_access (ns_dev=<optimized out>, num=<optimized out>[frame] frame_id_p: l={!stack,!code,!special} -> 0 ) at board/freescale/common/ns_access.c:204 204 for (i = 0; i < num; i++) [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e32a4,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit gdb$ bt [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e3434,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e32a4,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit #0 enable_devices_ns_access (ns_dev=<optimized out>, num=<optimized out>[frame] frame_id_p: l={!stack,!code,!special} -> 0 ) at board/freescale/common/ns_access.c:204 [frame] get_prev_frame: enter [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=0 [frame] get_prev_frame_always_1: -> {level=1,type=NORMAL_FRAME,unwind=0x561f635e3498,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001410,!special},func=0x10001410} // cached [frame] get_prev_frame_always_1: exit [frame] get_prev_frame: exit #1 enable_layerscape_ns_access ([frame] frame_id_p: l={!stack,!code,!special} -> 0 ) at board/freescale/common/ns_access.c:213 [frame] get_prev_frame: enter [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=1 [frame] frame_unwind_register_value: enter [frame] frame_unwind_arch: next_frame=1 -> aarch64 [frame] frame_unwind_register_value: frame=1, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=30(x30) [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=30(x30) [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] get_prev_frame: enter [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e336c,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit [frame] get_prev_frame: exit [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 0 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] value_fetch_lazy_register: (frame=0, regnum=30(x30), ...) -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=0, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=32(pc) [frame] frame_unwind_register_value: -> register=32 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> register=32 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] get_prev_frame_raw: -> {level=2,type=<unknown>,unwind=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>} [frame] compute_frame_id: enter [frame] compute_frame_id: fi=2 [frame] frame_unwind_find_by_frame: enter [frame] frame_unwind_find_by_frame: this_frame=2 [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=30(x30) [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=30(x30) [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] get_prev_frame: enter [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e34fc,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit [frame] get_prev_frame: exit [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 0 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] value_fetch_lazy_register: (frame=0, regnum=30(x30), ...) -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_pc: this_frame=1 -> 0x10001440 [frame] frame_unwind_try_unwinder: yes [frame] frame_unwind_find_by_frame: exit [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=2 [frame] get_prev_frame_raw: -> {level=3,type=<unknown>,unwind=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>} [frame] compute_frame_id: enter [frame] compute_frame_id: fi=3 [frame] frame_unwind_find_by_frame: enter [frame] frame_unwind_find_by_frame: this_frame=3 [frame] frame_unwind_arch: next_frame=2 -> aarch64 [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=2, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=32(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=30(x30) [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=-1, regnum=30(x30) [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_id_p: l={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] frame_id_eq: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 1 [frame] get_prev_frame: enter [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=-1 [frame] get_prev_frame_always_1: -> {level=0,type=INLINE_FRAME,unwind=0x561f635e33d0,pc=0x10001440,id={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1},func=<unknown>} // cached [frame] get_prev_frame_always_1: exit [frame] get_prev_frame: exit [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=<sentinel>,!code,special=0x0000000000000000} -> 0 [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1}, r={stack=0x1001de10,code=0x0000000010001434,!special,artificial=1} -> 1 [frame] value_fetch_lazy_register: (frame=0, regnum=30(x30), ...) -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: -> register=30 bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=[4014001000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_pc: this_frame=2 -> 0x10001440 [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "jit" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "(null)" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "aarch64 stub" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 signal" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "aarch64 prologue" [frame] frame_unwind_try_unwinder: yes [frame] frame_unwind_find_by_frame: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=2, regnum=31(sp) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=1, regnum=31(sp) [frame] frame_unwind_register_value: -> computed bytes=[10de011000000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=[10de011000000000] [frame] frame_unwind_register_value: exit [frame] get_frame_func_if_available: this_frame=3 -> 0x10001410 [frame] frame_id_p: l={stack=0x1001de10,code=0x0000000010001410,!special} -> 1 [frame] compute_frame_id: -> {stack=0x1001de10,code=0x0000000010001410,!special} [frame] compute_frame_id: exit [frame] frame_id_eq: l={stack=0x1001de10,code=0x0000000010001410,!special}, r={stack=0x1001de10,code=0x0000000010001410,!special} -> 1 [frame] get_prev_frame_if_no_cycle: -> nullptr // this frame has same ID [frame] get_prev_frame_always_1: exit [frame] frame_id_p: l={!stack,!code,!special} -> 0 inline-frame.c:173: internal-error: void inline_frame_this_id(frame_info*, void**, frame_id*): Assertion `frame_id_p (*this_id)' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. This is a bug, please report it. For instructions, see: <https://www.gnu.org/software/gdb/bugs/>. Aborted (core dumped) -- You are receiving this mail because: You are on the CC list for the bug.
prev parent reply other threads:[~2022-02-21 23:35 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-08-25 23:07 [Bug gdb/18869] New: " luto at mit dot edu 2021-11-04 13:19 ` [Bug gdb/18869] " rohini at junelife dot com 2022-02-21 23:35 ` sean.anderson at seco dot com [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-18869-4717-64qPhWcog4@http.sourceware.org/bugzilla/ \ --to=sourceware-bugzilla@sourceware.org \ --cc=gdb-prs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).