I build a recent trunk (commit ae86085027a Automatic date update in version.in) on pinebook (64-bit kernel, 32-bit userland) with gcc 10.2.1 and ran into: ... /home/rock/gdb/src/gdb/../gdbsupport/intrusive_list.h:458: internal-error: erase_element: Assertion `elem_node->prev != INTRUSIVE_LIST_UNLINKED_VALUE' failed.^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M ----- Backtrace --FAIL: gdb.base/gdb-sigterm.exp: pass=1: expect eof (GDB internal error) Resyncing due to internal error. ---^M 0xaae39795 gdb_internal_backtrace_1^M /home/rock/gdb/src/gdb/bt-utils.c:122^M 0xaae3982f _Z22gdb_internal_backtracev^M /home/rock/gdb/src/gdb/bt-utils.c:168^M 0xab277015 internal_vproblem^M /home/rock/gdb/src/gdb/utils.c:396^M 0xab27738b _Z15internal_verrorPKciS0_St9__va_list^M /home/rock/gdb/src/gdb/utils.c:476^M 0xab426c17 _Z18internal_error_locPKciS0_z^M /home/rock/gdb/src/gdbsupport/errors.cc:58^M 0xaae2ec2f _ZN14intrusive_listI10breakpoint19intrusive_base_nodeIS0_EE13erase_elementERS0_^M /home/rock/gdb/src/gdb/../gdbsupport/intrusive_list.h:458^M 0xaae2a87f ???^M 0xaae1d42b _Z17delete_breakpointP10breakpoint^M /home/rock/gdb/src/gdb/breakpoint.c:12636^M 0xab1ed045 delete_thread_breakpoint^M /home/rock/gdb/src/gdb/thread.c:98^M 0xab1ed0ab _Z30delete_single_step_breakpointsP11thread_info^M /home/rock/gdb/src/gdb/thread.c:123^M 0xab021e81 delete_thread_infrun_breakpoints^M /home/rock/gdb/src/gdb/infrun.c:3733^M 0xab021edd for_each_just_stopped_thread^M /home/rock/gdb/src/gdb/infrun.c:3752^M 0xab021f79 delete_just_stopped_threads_infrun_breakpoints^M /home/rock/gdb/src/gdb/infrun.c:3768^M 0xaae2c629 _ZN10scope_exitIPFvvEE7on_exitEv^M /home/rock/gdb/src/gdb/../gdbsupport/scope-exit.h:150^M 0xaae28533 _ZN15scope_exit_baseI10scope_exitIPFvvEEED2Ev^M /home/rock/gdb/src/gdb/../gdbsupport/scope-exit.h:68^M ---------------------^M [infrun] infrun_async: enable=0^M /home/rock/gdb/src/gdb/../gdbsupport/intrusive_list.h:458: internal-error: erase_element: Assertion `elem_node->prev != INTRUSIVE_LIST_UNLINKED_VALUE' failed.^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M Quit this debugging session? (y or n) [infrun] scoped_disable_commit_resumed: reason=killing^M [infrun] reset: reason=killing^M n^M ERROR: Could not resync from internal error (eof) gdb.base/gdb-sigterm.exp: pass=1: expect eof: stepped 5 times UNRESOLVED: gdb.base/gdb-sigterm.exp: 50 SIGTERM passes ...
Fixed by the usual: ... diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index fe09dbcbeee..0a58821fc00 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -12633,7 +12633,8 @@ delete_breakpoint (struct breakpoint *bpt) if (bpt->number) notify_breakpoint_deleted (bpt); - breakpoint_chain.erase (breakpoint_chain.iterator_to (*bpt)); + if (bpt->is_linked ()) + breakpoint_chain.erase (breakpoint_chain.iterator_to (*bpt)); /* Be sure no bpstat's are pointing at the breakpoint after it's been freed. */ ...
https://sourceware.org/pipermail/gdb-patches/2023-November/204066.html
Undo accidental marking as resolved-fixed.
Created attachment 15231 [details] Demonstrator patch that allows to reproduce the problem on amd64