From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: Kevin Buettner Cc: Fernando Nasser , gdb-patches@sources.redhat.com Subject: Re: RFA: EINTR in procfs_wait Date: Wed, 11 Apr 2001 16:43:00 -0000 Message-id: <3AD4EC32.2823D032@cygnus.com> References: <3AD32106.12A0443E@redhat.com> <1010410215732.ZM12867@ocotillo.lan> X-SW-Source: 2001-04/msg00114.html Kevin Buettner wrote: > > 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.) I wouldn't be too concerned about it -- the retry counter is a heuristic (and that's putting it kindly). > 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. That's not unreasonable, but unlike EINTR, EAGAIN was never in there before, so that would be a new test. You're welcome to try it out, and so long as nothing immediately breaks, put it in there. You might want to have it print a message, so that in case it does break something, we'll know why. > But, regardless, I think this fix ought to go in. We can add any > necessary adjustments later on. I'm inclined to agree, now that I've verified that the old procfs module used to test for EINTR in a similar-but-not-identical context. Fernando, you want to do the honors? > 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 > > > > 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