Re: Host GDB disconnect while waiting for tracee status change

Yao Qi
2017-08-23T08:18:42Z

Dmitry Antipov <dantipov@nvidia.com> writes:

> Is there a feature/option/etc. to gracefully handle the situation when gdbserver
> sits waiting for tracee status change and the network connection is
> getting lost?
>

I didn't try GDBserver under the case you described, but I find
something related int GDB manual,

https://sourceware.org/gdb/onlinedocs/gdb/Server.html
"Therefore, when the connection drops unexpectedly, and GDB cannot ask
gdbserver to kill its debugged processes, gdbserver stays running even
in the target remote mode."

GDBserver is able to handle this for tracepoint, which is called
disconnected-tracing.
https://sourceware.org/gdb/onlinedocs/gdb/Starting-and-Stopping-Trace-Experiments.html#disconnected-tracing
With tracepoint, GDBserver knows what it should do when tracee status
changed and don't have to communicate with GDB.

> AFAICS in case of Linux, linux_wait_for_event_filtered() just enters
> sigsuspend()
> waiting for SIGCHLD and ignoring anything else, thus having no
> opportunity to detect
> any socket status changes even if the latter are signaled with SIGIOs requested
> in enable_async_notification().

--
Yao (齐尧)