diff -r 33a890c972c3 -r 69204b98dc3d src/java.base/unix/native/libnio/ch/IOUtil.c --- a/src/java.base/unix/native/libnio/ch/IOUtil.c Fri May 25 11:59:01 2018 -0700 +++ b/src/java.base/unix/native/libnio/ch/IOUtil.c Fri May 25 12:44:34 2018 -0700 @@ -120,7 +120,7 @@ for (;;) { int n = read(fd, buf, sizeof(buf)); tn += n; - if ((n < 0) && (errno != EAGAIN)) + if ((n < 0) && (errno != EAGAIN && errno != EWOULDBLOCK)) JNU_ThrowIOExceptionWithLastError(env, "Drain"); if (n == (int)sizeof(buf)) continue; @@ -136,7 +136,7 @@ res = read(fd, buf, 1); if (res < 0) { - if (errno == EAGAIN) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { res = 0; } else if (errno == EINTR) { return IOS_INTERRUPTED; @@ -187,7 +187,7 @@ return 0; } } - else if (errno == EAGAIN) + else if (errno == EAGAIN || errno == EWOULDBLOCK) return IOS_UNAVAILABLE; else if (errno == EINTR) return IOS_INTERRUPTED; @@ -212,7 +212,7 @@ return 0; } } - else if (errno == EAGAIN) + else if (errno == EAGAIN || errno == EWOULDBLOCK) return IOS_UNAVAILABLE; else if (errno == EINTR) return IOS_INTERRUPTED;