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.
+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>
* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
}
CATCH (exception, RETURN_MASK_ERROR)
{
+ fflush (stdout);
+ fprintf (stderr, "gdbserver: %s\n", exception.message);
+
if (response_needed)
{
write_enn (own_buf);
putpkt (own_buf);
}
+
+ if (run_once)
+ throw_quit ("Quit");
}
END_CATCH
}