RFA: EINTR in procfs_wait

Kevin Buettner kevinb@cygnus.com
Tue Apr 10 14:57:00 GMT 2001


Fernando,

I think something like this is needed.  I have two concerns though...

  1) The patch below is causing the retry counter to be incremented.
     It's not clear to me if this is the right thing to do or not.
     (I honestly don't know what it should be.  I'd have the same
     concern if I saw that it wasn't being incremented.)

  2) I think EAGAIN should be tested for in addition to EINTR.  See
     http://sources.redhat.com/ml/gdb/2001-04/msg00078.html .  Hmm...
     now that I look at this some more, it seems that we might
     need another retry test somewhere else as well.

But, regardless, I think this fix ought to go in.  We can add any
necessary adjustments later on.

Kevin

On Apr 10, 11:04am, Fernando Nasser wrote:
> Subject: RFA: EINTR in procfs_wait
> Folks,
> 
> I got this patch and it seems that we did forget to test for EINTR in
> procfs_wait(). It looks like an "obvious fix" but I would like someone
> else to double check it.
> 
> Thanks in advance.
> 
> Fernando
> 
> 
> 
> 2001-04-05  Adam Mirowski  <Adam.Mirowski@Sun.COM>
> 
> 	Fixed Insight on Solaris. It was not possible to debug a process 
> 	because of EINTR "errors".
> 	* procfs.c: (procfs_wait): if proc_wait_for_stop() fails
> 	with EINTR, retry the call.
> 
> 
> Index: gdb/procfs.c
> ------- procfs.c -------
> *** /tmp/dMKayx_	Tue Apr 10 16:20:54 2001
> --- procfs.c	Thu Apr  5 22:21:40 2001
> ***************
> *** 3518,3531 ****
> --- 3518,3533 ----
>   
>   	      if (retval != PIDGET (inferior_pid))	/* wrong child? */
>   		error ("procfs: couldn't stop process %d: wait returned %d\n",
>   		       inferior_pid, retval);
>   	      /* FIXME: might I not just use waitpid?
>   		 Or try find_procinfo to see if I know about this child? */
>   	    }
> + 	  else if (errno == EINTR)
> + 	    goto wait_again;
>   	  else
>   	    {
>   	      /* Unknown error from wait_for_stop. */
>   	      proc_error (pi, "target_wait (wait_for_stop)", __LINE__);
>   	    }
>   	}
>         else
>-- End of excerpt from Fernando Nasser




More information about the Gdb-patches mailing list