--- a/src/hotspot/os/posix/os_posix.cpp Mon Oct 09 07:08:53 2017 +0000
+++ b/src/hotspot/os/posix/os_posix.cpp Mon Oct 09 08:15:25 2017 +0000
@@ -1770,6 +1770,12 @@
if (v == 0) { // Do this the hard way by blocking ...
struct timespec abst;
+ // We have to watch for overflow when converting millis to nanos,
+ // but if millis is that large then we will end up limiting to
+ // MAX_SECS anyway, so just do that here.
+ if (millis / MILLIUNITS > MAX_SECS) {
+ millis = jlong(MAX_SECS) * MILLIUNITS;
+ }
to_abstime(&abst, millis * (NANOUNITS / MILLIUNITS), false);
int ret = OS_TIMEOUT;