Roman Kennke writes:
> Hi again,
>
> Am Montag, den 04.12.2006, 11:19 -0800 schrieb David Daney:
> > Andrew Haley wrote:
> > > Roman Kennke writes:
> > > > > While testing eclipse I sometimes saw interrupted reads occur.
> > > VMChannel
> > > > > already had a mechanism for checking the interrupted status of a
> > > thread
> > > > > when a system call returned early. But this wasn't used for the
> > > read()
> > > > > and write() methods. This patch adds the logic. And makes my eclipse
> > > > > happy again :)
> > > >
> > > > I am seeing a (possibly) related issue still:
> > > >
> > > > java.net.SocketException: Interrupted system call
> > >
> > > If connect(2) returns EINTR, you should retry:
> > >
> > > CPNIO_EXPORT int
> > > cpnio_connect (int fd, const struct sockaddr *addr, socklen_t addrlen)
> > > {
> > > int retcode;
> > > do
> > > {
> > > retcode = connect (fd, addr, addrlen);
> > > }
> > > while (retcode == EINTR);
> > > return retcode;
> > > }
> >
> > Except that you should probably also check if the thread was interrupted
> > as the original patch does for read and write.
>
> I did it like that and it solved all my problems :-)
But surely you have the same problem with any other callers of
cpio_connect, or indeed cpio_*. You only fixed the bug in one place.
Andrew.