public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error'
@ 2024-03-29 9:34 vries at gcc dot gnu.org
2024-03-29 9:39 ` [Bug gdb/31577] " vries at gcc dot gnu.org
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-29 9:34 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
Bug ID: 31577
Summary: [gdb] terminate called after throwing an instance of
'gdb_exception_error'
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: gdb
Assignee: unassigned at sourceware dot org
Reporter: vries at gcc dot gnu.org
Target Milestone: ---
I ran test-case gdb.server/connect-with-no-symbol-file.exp in an opensuse leap
15.5 container on an fedora asahi aarch64-linux system.
I ran into:
...
(gdb) detach^M
Detaching from program:
target:/data/vries/gdb/build/gdb/testsuite/outputs/gdb.server/connect-with-no-symbol-file/connect-with-no-symbol-file,
process 185104^M
Ending remote debugging.^M
terminate called after throwing an instance of 'gdb_exception_error'^M
^M
^M
Fatal signal: Aborted^M
----- Backtrace -----^M
0x5b6603 gdb_internal_backtrace_1^M
/data/vries/gdb/src/gdb/bt-utils.c:121^M
0x5b66c3 _Z22gdb_internal_backtracev^M
/data/vries/gdb/src/gdb/bt-utils.c:167^M
0x7a85d3 handle_fatal_signal^M
/data/vries/gdb/src/gdb/event-top.c:903^M
0xffff75aa87ff ???^M
0xffff74b977b4 ???^M
0xffff74b98c17 ???^M
0xffff74ea26f3 ???^M
0xffff74ea011b ???^M
0xffff74ea017f ???^M
0xffff74ea0463 ???^M
0x154886f throw_it^M
/data/vries/gdb/src/gdbsupport/common-exceptions.cc:203^M
0x154891f _Z12throw_verror6errorsPKcSt9__va_list^M
/data/vries/gdb/src/gdbsupport/common-exceptions.cc:211^M
0x15489ff _Z11throw_error6errorsPKcz^M
/data/vries/gdb/src/gdbsupport/common-exceptions.cc:226^M
0xac8f2b _ZN13remote_target8readcharEi^M
/data/vries/gdb/src/gdb/remote.c:9856^M
0xac9f03
_ZN13remote_target6getpktEPSt6vectorIcN3gdb22default_init_allocatorIcSaIcEEEEbPb^M
/data/vries/gdb/src/gdb/remote.c:10326^M
0xacf3cf
_ZN13remote_target26remote_hostio_send_commandEiiP12fileio_errorPPKcPi^M
/data/vries/gdb/src/gdb/remote.c:12567^M
0xad03bb _ZN13remote_target12fileio_fstatEiP4statP12fileio_error^M
/data/vries/gdb/src/gdb/remote.c:12979^M
0xc39877 _Z19target_fileio_fstatiP4statP12fileio_error^M
/data/vries/gdb/src/gdb/target.c:3315^M
0x7eee5b _ZN20target_fileio_stream4statEP3bfdP4stat^M
/data/vries/gdb/src/gdb/gdb_bfd.c:467^M
0x7f012b operator()^M
/data/vries/gdb/src/gdb/gdb_bfd.c:955^M
0x7f015b _FUN^M
/data/vries/gdb/src/gdb/gdb_bfd.c:956^M
0xf9b837 opncls_bstat^M
/data/vries/gdb/src/bfd/opncls.c:665^M
---------------------^M
A fatal error internal to GDB has been detected, further^M
debugging is not possible. GDB will now terminate.^M
This is a bug, please report it. For instructions, see:^M
<https://www.gnu.org/software/gdb/bugs/>.^M
^M
ERROR: GDB process no longer exists
GDB process exited with wait status 185065 exp84 0 0 CHILDKILLED SIGABRT
SIGABRT
UNRESOLVED: gdb.server/connect-with-no-symbol-file.exp: sysroot=target::
action=permission: detach
...
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug gdb/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
@ 2024-03-29 9:39 ` vries at gcc dot gnu.org
2024-03-29 9:39 ` vries at gcc dot gnu.org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-29 9:39 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
Backtrace of the corefile:
...
(gdb) bt
#0 0x0000ffff75504f54 in raise () from /lib64/libpthread.so.0
#1 0x00000000007a86b4 in handle_fatal_signal (sig=6)
at /data/vries/gdb/src/gdb/event-top.c:926
#2 <signal handler called>
#3 0x0000ffff74b977b4 in raise () from /lib64/libc.so.6
#4 0x0000ffff74b98c18 in abort () from /lib64/libc.so.6
#5 0x0000ffff74ea26f4 in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib64/libstdc++.so.6
#6 0x0000ffff74ea011c in ?? () from /usr/lib64/libstdc++.so.6
#7 0x0000ffff74ea0180 in std::terminate() () from /usr/lib64/libstdc++.so.6
#8 0x0000ffff74ea0464 in __cxa_throw () from /usr/lib64/libstdc++.so.6
#9 0x0000000001548870 in throw_it (reason=RETURN_ERROR,
error=TARGET_CLOSE_ERROR,
fmt=0x16c7810 "Remote connection closed", ap=...)
at /data/vries/gdb/src/gdbsupport/common-exceptions.cc:203
#10 0x0000000001548920 in throw_verror (error=TARGET_CLOSE_ERROR,
fmt=0x16c7810 "Remote connection closed", ap=...)
at /data/vries/gdb/src/gdbsupport/common-exceptions.cc:211
#11 0x0000000001548a00 in throw_error (error=TARGET_CLOSE_ERROR,
fmt=0x16c7810 "Remote connection closed")
at /data/vries/gdb/src/gdbsupport/common-exceptions.cc:226
#12 0x0000000000ac8f2c in remote_target::readchar (this=0x233d3d90, timeout=2)
at /data/vries/gdb/src/gdb/remote.c:9856
#13 0x0000000000ac9f04 in remote_target::getpkt (this=0x233d3d90,
buf=0x233d40a8,
forever=false, is_notif=0x0) at /data/vries/gdb/src/gdb/remote.c:10326
#14 0x0000000000acf3d0 in remote_target::remote_hostio_send_command
(this=0x233d3d90,
command_bytes=13, which_packet=17, remote_errno=0xfffff1a3cf38,
attachment=0xfffff1a3ce88, attachment_len=0xfffff1a3ce90)
at /data/vries/gdb/src/gdb/remote.c:12567
#15 0x0000000000ad03bc in remote_target::fileio_fstat (this=0x233d3d90, fd=3,
st=0xfffff1a3d020, remote_errno=0xfffff1a3cf38)
at /data/vries/gdb/src/gdb/remote.c:12979
#16 0x0000000000c39878 in target_fileio_fstat (fd=0, sb=0xfffff1a3d020,
target_errno=0xfffff1a3cf38) at /data/vries/gdb/src/gdb/target.c:3315
#17 0x00000000007eee5c in target_fileio_stream::stat (this=0x233d4400,
abfd=0x2323fc40,
sb=0xfffff1a3d020) at /data/vries/gdb/src/gdb/gdb_bfd.c:467
#18 0x00000000007f012c in <lambda(bfd*, void*, stat*)>::operator()(bfd *, void
*, stat *) const (__closure=0x0, abfd=0x2323fc40, stream=0x233d4400,
sb=0xfffff1a3d020)
at /data/vries/gdb/src/gdb/gdb_bfd.c:955
#19 0x00000000007f015c in <lambda(bfd*, void*, stat*)>::_FUN(bfd *, void *,
stat *) ()
at /data/vries/gdb/src/gdb/gdb_bfd.c:956
#20 0x0000000000f9b838 in opncls_bstat (abfd=0x2323fc40, sb=0xfffff1a3d020)
at /data/vries/gdb/src/bfd/opncls.c:665
#21 0x0000000000f90adc in bfd_stat (abfd=0x2323fc40, statbuf=0xfffff1a3d020)
at /data/vries/gdb/src/bfd/bfdio.c:431
#22 0x000000000065fe20 in reopen_exec_file () at
/data/vries/gdb/src/gdb/corefile.c:52
#23 0x0000000000c3a3e8 in generic_mourn_inferior ()
at /data/vries/gdb/src/gdb/target.c:3642
#24 0x0000000000abf3f0 in remote_unpush_target (target=0x233d3d90)
at /data/vries/gdb/src/gdb/remote.c:6067
#25 0x0000000000aca8b0 in remote_target::mourn_inferior (this=0x233d3d90)
at /data/vries/gdb/src/gdb/remote.c:10587
#26 0x0000000000c387cc in target_mourn_inferior (
ptid=<error reading variable: Cannot access memory at address 0x2d310>)
at /data/vries/gdb/src/gdb/target.c:2738
#27 0x0000000000abfff0 in remote_target::remote_detach_1 (this=0x233d3d90,
inf=0x22fce540, from_tty=1) at /data/vries/gdb/src/gdb/remote.c:6421
#28 0x0000000000ac0094 in remote_target::detach (this=0x233d3d90,
inf=0x22fce540,
from_tty=1) at /data/vries/gdb/src/gdb/remote.c:6436
#29 0x0000000000c37c3c in target_detach (inf=0x22fce540, from_tty=1)
at /data/vries/gdb/src/gdb/target.c:2526
#30 0x0000000000860424 in detach_command (args=0x0, from_tty=1)
at /data/vries/gdb/src/gdb/infcmd.c:2817
#31 0x000000000060b594 in do_simple_func (args=0x0, from_tty=1, c=0x231431a0)
at /data/vries/gdb/src/gdb/cli/cli-decode.c:94
#32 0x00000000006108c8 in cmd_func (cmd=0x231431a0, args=0x0, from_tty=1)
at /data/vries/gdb/src/gdb/cli/cli-decode.c:2741
#33 0x0000000000c65a94 in execute_command (p=0x232e52f6 "", from_tty=1)
at /data/vries/gdb/src/gdb/top.c:570
#34 0x00000000007a7d2c in command_handler (command=0x232e52f0 "")
at /data/vries/gdb/src/gdb/event-top.c:566
#35 0x00000000007a8290 in command_line_handler (rl=...)
at /data/vries/gdb/src/gdb/event-top.c:802
#36 0x0000000000c9092c in tui_command_line_handler (rl=...)
at /data/vries/gdb/src/gdb/tui/tui-interp.c:103
#37 0x00000000007a750c in gdb_rl_callback_handler (rl=0x23385330 "detach")
at /data/vries/gdb/src/gdb/event-top.c:258
#38 0x0000000000d910f4 in rl_callback_read_char ()
at /data/vries/gdb/src/readline/readline/callback.c:290
#39 0x00000000007a7338 in gdb_rl_callback_read_char_wrapper_noexcept ()
at /data/vries/gdb/src/gdb/event-top.c:194
#40 0x00000000007a73f0 in gdb_rl_callback_read_char_wrapper
(client_data=0x22fbf640)
at /data/vries/gdb/src/gdb/event-top.c:233
#41 0x0000000000cbee1c in stdin_event_handler (error=0, client_data=0x22fbf640)
at /data/vries/gdb/src/gdb/ui.c:154
#42 0x000000000154ed60 in handle_file_event (file_ptr=0x232be730, ready_mask=1)
at /data/vries/gdb/src/gdbsupport/event-loop.cc:572
#43 0x000000000154f21c in gdb_wait_for_event (block=1)
at /data/vries/gdb/src/gdbsupport/event-loop.cc:693
#44 0x000000000154dec4 in gdb_do_one_event (mstimeout=-1)
at /data/vries/gdb/src/gdbsupport/event-loop.cc:263
#45 0x0000000000910f98 in start_event_loop () at
/data/vries/gdb/src/gdb/main.c:400
#46 0x0000000000911130 in captured_command_loop () at
/data/vries/gdb/src/gdb/main.c:464
#47 0x0000000000912b5c in captured_main (data=0xfffff1a3db58)
at /data/vries/gdb/src/gdb/main.c:1338
#48 0x0000000000912bf4 in gdb_main (args=0xfffff1a3db58)
at /data/vries/gdb/src/gdb/main.c:1357
#49 0x00000000004170f4 in main (argc=10, argv=0xfffff1a3dcc8)
at /data/vries/gdb/src/gdb/gdb.c:38
(gdb)
...
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug gdb/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
2024-03-29 9:39 ` [Bug gdb/31577] " vries at gcc dot gnu.org
@ 2024-03-29 9:39 ` vries at gcc dot gnu.org
2024-04-19 8:14 ` vries at gcc dot gnu.org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-03-29 9:39 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
FTR, this is at commit b58829cdeff ("x86/SSE2AVX: move checking").
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug gdb/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
2024-03-29 9:39 ` [Bug gdb/31577] " vries at gcc dot gnu.org
2024-03-29 9:39 ` vries at gcc dot gnu.org
@ 2024-04-19 8:14 ` vries at gcc dot gnu.org
2024-04-19 8:14 ` [Bug remote/31577] " vries at gcc dot gnu.org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-04-19 8:14 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> ---
Something like this fixes it:
...
diff --git a/gdb/remote.c b/gdb/remote.c
index 5c9fdebcdbe..3de4a0bae80 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -12574,8 +12574,20 @@ remote_target::remote_hostio_send_command (int
command_bytes, int which_packet,
return -1;
}
- putpkt_binary (rs->buf.data (), command_bytes);
- bytes_read = getpkt (&rs->buf);
+ try
+ {
+ putpkt_binary (rs->buf.data (), command_bytes);
+ bytes_read = getpkt (&rs->buf);
+ }
+ catch (const gdb_exception &ex)
+ {
+ if (ex.error == TARGET_CLOSE_ERROR)
+ {
+ *remote_errno = FILEIO_EIO;
+ return -1;
+ }
+ throw;
+ }
/* If it timed out, something is wrong. Don't try to parse the
buffer. */
...
But it remains unclear to me at what point exactly we should catch this.
Here? Down in getpkt? Up in detach_command?
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug remote/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
` (2 preceding siblings ...)
2024-04-19 8:14 ` vries at gcc dot gnu.org
@ 2024-04-19 8:14 ` vries at gcc dot gnu.org
2024-04-19 9:11 ` vries at gcc dot gnu.org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-04-19 8:14 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
Tom de Vries <vries at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|gdb |remote
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug remote/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
` (3 preceding siblings ...)
2024-04-19 8:14 ` [Bug remote/31577] " vries at gcc dot gnu.org
@ 2024-04-19 9:11 ` vries at gcc dot gnu.org
2024-04-19 12:04 ` vries at gcc dot gnu.org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-04-19 9:11 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
Passes with -fexceptions.
So, this is about a c++ exception reaching c code compiled without
-fexceptions, and terminating.
This is a fix that catches the exception just before reaching c code:
...
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index 1462aaf0f89..1a29b83eb2c 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -951,8 +951,15 @@ gdb_bfd_openr_iovec (const char *filename, const char
*target,
auto stat_trampoline = [] (struct bfd *abfd, void *stream,
struct stat *sb) -> int
{
- gdb_bfd_iovec_base *obj = static_cast<gdb_bfd_iovec_base *> (stream);
- return obj->stat (abfd, sb);
+ try
+ {
+ gdb_bfd_iovec_base *obj = static_cast<gdb_bfd_iovec_base *> (stream);
+ return obj->stat (abfd, sb);
+ }
+ catch (const gdb_exception_error &)
+ {
+ return -1;
+ }
};
auto close_trampoline = [] (struct bfd *nbfd, void *stream) -> int
...
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug remote/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
` (4 preceding siblings ...)
2024-04-19 9:11 ` vries at gcc dot gnu.org
@ 2024-04-19 12:04 ` vries at gcc dot gnu.org
2024-04-27 15:48 ` cvs-commit at gcc dot gnu.org
2024-04-27 15:50 ` vries at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-04-19 12:04 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #5 from Tom de Vries <vries at gcc dot gnu.org> ---
https://sourceware.org/pipermail/gdb-patches/2024-April/208302.html
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug remote/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
` (5 preceding siblings ...)
2024-04-19 12:04 ` vries at gcc dot gnu.org
@ 2024-04-27 15:48 ` cvs-commit at gcc dot gnu.org
2024-04-27 15:50 ` vries at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-04-27 15:48 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--- Comment #6 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e705ee1621d35af5d05bf40b8653fe9d4be2be09
commit e705ee1621d35af5d05bf40b8653fe9d4be2be09
Author: Tom de Vries <tdevries@suse.de>
Date: Sat Apr 27 17:48:22 2024 +0200
[gdb/remote] Fix abort on REMOTE_CLOSE_ERROR
When running test-case gdb.server/connect-with-no-symbol-file.exp on
aarch64-linux (specifically, an opensuse leap 15.5 container on a
fedora asahi 39 system), I run into:
...
(gdb) detach^M
Detaching from program: target:connect-with-no-symbol-file, process
185104^M
Ending remote debugging.^M
terminate called after throwing an instance of 'gdb_exception_error'^M
...
The detailed backtrace of the corefile is:
...
(gdb) bt
#0 0x0000ffff75504f54 in raise () from /lib64/libpthread.so.0
#1 0x00000000007a86b4 in handle_fatal_signal (sig=6)
at gdb/event-top.c:926
#2 <signal handler called>
#3 0x0000ffff74b977b4 in raise () from /lib64/libc.so.6
#4 0x0000ffff74b98c18 in abort () from /lib64/libc.so.6
#5 0x0000ffff74ea26f4 in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib64/libstdc++.so.6
#6 0x0000ffff74ea011c in ?? () from /usr/lib64/libstdc++.so.6
#7 0x0000ffff74ea0180 in std::terminate() () from
/usr/lib64/libstdc++.so.6
#8 0x0000ffff74ea0464 in __cxa_throw () from /usr/lib64/libstdc++.so.6
#9 0x0000000001548870 in throw_it (reason=RETURN_ERROR,
error=TARGET_CLOSE_ERROR, fmt=0x16c7810 "Remote connection closed",
ap=...)
at gdbsupport/common-exceptions.cc:203
#10 0x0000000001548920 in throw_verror (error=TARGET_CLOSE_ERROR,
fmt=0x16c7810 "Remote connection closed", ap=...)
at gdbsupport/common-exceptions.cc:211
#11 0x0000000001548a00 in throw_error (error=TARGET_CLOSE_ERROR,
fmt=0x16c7810 "Remote connection closed")
at gdbsupport/common-exceptions.cc:226
#12 0x0000000000ac8f2c in remote_target::readchar (this=0x233d3d90,
timeout=2)
at gdb/remote.c:9856
#13 0x0000000000ac9f04 in remote_target::getpkt (this=0x233d3d90,
buf=0x233d40a8, forever=false, is_notif=0x0) at gdb/remote.c:10326
#14 0x0000000000acf3d0 in remote_target::remote_hostio_send_command
(this=0x233d3d90, command_bytes=13, which_packet=17,
remote_errno=0xfffff1a3cf38, attachment=0xfffff1a3ce88,
attachment_len=0xfffff1a3ce90) at gdb/remote.c:12567
#15 0x0000000000ad03bc in remote_target::fileio_fstat (this=0x233d3d90,
fd=3,
st=0xfffff1a3d020, remote_errno=0xfffff1a3cf38)
at gdb/remote.c:12979
#16 0x0000000000c39878 in target_fileio_fstat (fd=0, sb=0xfffff1a3d020,
target_errno=0xfffff1a3cf38) at gdb/target.c:3315
#17 0x00000000007eee5c in target_fileio_stream::stat (this=0x233d4400,
abfd=0x2323fc40, sb=0xfffff1a3d020) at gdb/gdb_bfd.c:467
#18 0x00000000007f012c in <lambda(bfd*, void*, stat*)>::operator()(bfd *,
void *, stat *) const (__closure=0x0, abfd=0x2323fc40,
stream=0x233d4400,
sb=0xfffff1a3d020) at gdb/gdb_bfd.c:955
#19 0x00000000007f015c in <lambda(bfd*, void*, stat*)>::_FUN(bfd *, void
*,
stat *) () at gdb/gdb_bfd.c:956
#20 0x0000000000f9b838 in opncls_bstat (abfd=0x2323fc40,
sb=0xfffff1a3d020)
at bfd/opncls.c:665
#21 0x0000000000f90adc in bfd_stat (abfd=0x2323fc40,
statbuf=0xfffff1a3d020)
at bfd/bfdio.c:431
#22 0x000000000065fe20 in reopen_exec_file () at gdb/corefile.c:52
#23 0x0000000000c3a3e8 in generic_mourn_inferior ()
at gdb/target.c:3642
#24 0x0000000000abf3f0 in remote_unpush_target (target=0x233d3d90)
at gdb/remote.c:6067
#25 0x0000000000aca8b0 in remote_target::mourn_inferior (this=0x233d3d90)
at gdb/remote.c:10587
#26 0x0000000000c387cc in target_mourn_inferior (
ptid=<error reading variable: Cannot access memory at address
0x2d310>)
at gdb/target.c:2738
#27 0x0000000000abfff0 in remote_target::remote_detach_1 (this=0x233d3d90,
inf=0x22fce540, from_tty=1) at gdb/remote.c:6421
#28 0x0000000000ac0094 in remote_target::detach (this=0x233d3d90,
inf=0x22fce540, from_tty=1) at gdb/remote.c:6436
#29 0x0000000000c37c3c in target_detach (inf=0x22fce540, from_tty=1)
at gdb/target.c:2526
#30 0x0000000000860424 in detach_command (args=0x0, from_tty=1)
at gdb/infcmd.c:2817
#31 0x000000000060b594 in do_simple_func (args=0x0, from_tty=1,
c=0x231431a0)
at gdb/cli/cli-decode.c:94
#32 0x00000000006108c8 in cmd_func (cmd=0x231431a0, args=0x0, from_tty=1)
at gdb/cli/cli-decode.c:2741
#33 0x0000000000c65a94 in execute_command (p=0x232e52f6 "", from_tty=1)
at gdb/top.c:570
#34 0x00000000007a7d2c in command_handler (command=0x232e52f0 "")
at gdb/event-top.c:566
#35 0x00000000007a8290 in command_line_handler (rl=...)
at gdb/event-top.c:802
#36 0x0000000000c9092c in tui_command_line_handler (rl=...)
at gdb/tui/tui-interp.c:103
#37 0x00000000007a750c in gdb_rl_callback_handler (rl=0x23385330 "detach")
at gdb/event-top.c:258
#38 0x0000000000d910f4 in rl_callback_read_char ()
at readline/readline/callback.c:290
#39 0x00000000007a7338 in gdb_rl_callback_read_char_wrapper_noexcept ()
at gdb/event-top.c:194
#40 0x00000000007a73f0 in gdb_rl_callback_read_char_wrapper
(client_data=0x22fbf640) at gdb/event-top.c:233
#41 0x0000000000cbee1c in stdin_event_handler (error=0,
client_data=0x22fbf640)
at gdb/ui.c:154
#42 0x000000000154ed60 in handle_file_event (file_ptr=0x232be730,
ready_mask=1)
at gdbsupport/event-loop.cc:572
#43 0x000000000154f21c in gdb_wait_for_event (block=1)
at gdbsupport/event-loop.cc:693
#44 0x000000000154dec4 in gdb_do_one_event (mstimeout=-1)
at gdbsupport/event-loop.cc:263
#45 0x0000000000910f98 in start_event_loop () at gdb/main.c:400
#46 0x0000000000911130 in captured_command_loop () at gdb/main.c:464
#47 0x0000000000912b5c in captured_main (data=0xfffff1a3db58)
at gdb/main.c:1338
#48 0x0000000000912bf4 in gdb_main (args=0xfffff1a3db58)
at gdb/main.c:1357
#49 0x00000000004170f4 in main (argc=10, argv=0xfffff1a3dcc8)
at gdb/gdb.c:38
(gdb)
...
The abort happens because a c++ exception escapes to c code, specifically
opncls_bstat in bfd/opncls.c. Compiling with -fexceptions works around
this.
Fix this by catching the exception just before it escapes, in
stat_trampoline
and likewise in few similar spot.
Add a new template catch_exceptions to do so in a consistent way.
Tested on aarch64-linux.
Approved-by: Pedro Alves <pedro@palves.net>
PR remote/31577
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31577
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug remote/31577] [gdb] terminate called after throwing an instance of 'gdb_exception_error'
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
` (6 preceding siblings ...)
2024-04-27 15:48 ` cvs-commit at gcc dot gnu.org
@ 2024-04-27 15:50 ` vries at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: vries at gcc dot gnu.org @ 2024-04-27 15:50 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=31577
Tom de Vries <vries at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Target Milestone|--- |15.1
Status|NEW |RESOLVED
--- Comment #7 from Tom de Vries <vries at gcc dot gnu.org> ---
Fixed.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-04-27 15:50 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-29 9:34 [Bug gdb/31577] New: [gdb] terminate called after throwing an instance of 'gdb_exception_error' vries at gcc dot gnu.org
2024-03-29 9:39 ` [Bug gdb/31577] " vries at gcc dot gnu.org
2024-03-29 9:39 ` vries at gcc dot gnu.org
2024-04-19 8:14 ` vries at gcc dot gnu.org
2024-04-19 8:14 ` [Bug remote/31577] " vries at gcc dot gnu.org
2024-04-19 9:11 ` vries at gcc dot gnu.org
2024-04-19 12:04 ` vries at gcc dot gnu.org
2024-04-27 15:48 ` cvs-commit at gcc dot gnu.org
2024-04-27 15:50 ` vries at gcc dot gnu.org
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).