mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-03 05:12:28 +08:00
gdbserver: fix silent error exit
Running gdb.threads/process-dies-while-handling-bp.exp against gdbserver sometimes FAILs because GDBserver drops the connection, but the logs leave no clue on what the reason could be. Running manually a few times, I saw the same: $ ./gdbserver/gdbserver --multi :9999 testsuite/gdb.threads/process-dies-while-handling-bp Process testsuite/gdb.threads/process-dies-while-handling-bp created; pid = 12766 Listening on port 9999 Remote debugging from host 127.0.0.1 Listening on port 9999 Child exited with status 0 Child exited with status 0 What happened is that an exception escaped and gdbserver reopened the connection, which led to that second "Listening on port 9999" output. The error was a failure to access registers from a now-dead thread. The exception probably shouldn't have escaped here, but meanwhile, this at least makes the issue less mysterious. Tested on x86_64 Fedora 20. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves <palves@redhat.com> * server.c (captured_main): On error, print the exception message to stderr, and if run_once is set, throw a quit.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2015-08-06 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* server.c (captured_main): On error, print the exception message
|
||||||
|
to stderr, and if run_once is set, throw a quit.
|
||||||
|
|
||||||
2015-08-06 Pedro Alves <palves@redhat.com>
|
2015-08-06 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
|
* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
|
||||||
|
@ -3610,11 +3610,17 @@ captured_main (int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
CATCH (exception, RETURN_MASK_ERROR)
|
CATCH (exception, RETURN_MASK_ERROR)
|
||||||
{
|
{
|
||||||
|
fflush (stdout);
|
||||||
|
fprintf (stderr, "gdbserver: %s\n", exception.message);
|
||||||
|
|
||||||
if (response_needed)
|
if (response_needed)
|
||||||
{
|
{
|
||||||
write_enn (own_buf);
|
write_enn (own_buf);
|
||||||
putpkt (own_buf);
|
putpkt (own_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (run_once)
|
||||||
|
throw_quit ("Quit");
|
||||||
}
|
}
|
||||||
END_CATCH
|
END_CATCH
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user