Re: "The target is not responding to interrupt requests" after re-attach

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 10/19/2017 12:57 PM, Dmitry Antipov wrote:
> On 10/19/2017 02:39 PM, Pedro Alves wrote:
> 
>> No good reason.  Sounds like you found a bug.
> 
> Currently gdbserver installs SIGIO handler just once, in
> initialize_async_io ()
> called from captured_main (), and this handler is removed when remote_desc
> is closed in remote_close (). Next, when a new instance of remote_desc is
> fetched from accept () and has '\003' arrived, input_interrupt () is never
> called because it is not registered as SIGIO handler.
> 
> Probably the fix is to (re)install SIGIO handler each time when a new
> async-served descriptor gets hooked into an event loop, for example,
> in enable_async_notification ().

Thanks much for tracking that down.

We could instead not uninstall the handler in remote_close, but
block the signal instead, putting us back in the original
state?   Like:

 @@ -403,10 +403,7 @@ remote_close (void)
  {
    delete_file_handler (remote_desc);

 -#ifndef USE_WIN32API
 -  /* Remove SIGIO handler.  */
 -  signal (SIGIO, SIG_IGN);
 -#endif
 +  disable_async_io ();

I wrote a gdb testsuite/gdb.server/ test exposing this, and
sent a patch to the patches list, after running that through
the testsuite:
  https://sourceware.org/ml/gdb-patches/2017-10/msg00606.html

Thanks,
Pedro Alves
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.