Skip to content

Commit 1df77ec

Browse files
author
Gerard Ziemski
committed
8291060: OPEN_MAX is no longer the max limit on macOS >= 10.6 for RLIMIT_NOFILE
Reviewed-by: dholmes, dcubed
1 parent fcc1195 commit 1df77ec

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/hotspot/os/bsd/os_bsd.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,15 +1983,18 @@ jint os::init_2(void) {
19831983
log_info(os)("os::init_2 getrlimit failed: %s", os::strerror(errno));
19841984
} else {
19851985
nbr_files.rlim_cur = nbr_files.rlim_max;
1986-
1987-
#ifdef __APPLE__
1988-
// Darwin returns RLIM_INFINITY for rlim_max, but fails with EINVAL if
1989-
// you attempt to use RLIM_INFINITY. As per setrlimit(2), OPEN_MAX must
1990-
// be used instead
1991-
nbr_files.rlim_cur = MIN(OPEN_MAX, nbr_files.rlim_cur);
1992-
#endif
1993-
19941986
status = setrlimit(RLIMIT_NOFILE, &nbr_files);
1987+
#ifdef __APPLE__
1988+
if (status != 0 && errno == EINVAL) {
1989+
// On macOS >= 10.6 if we define _DARWIN_UNLIMITED_STREAMS or _DARWIN_C_SOURCE
1990+
// (we define _DARWIN_C_SOURCE) we can ask for RLIM_INFINITY,
1991+
// however, on macOS < 10.6 Darwin returns RLIM_INFINITY for rlim_max,
1992+
// but fails with EINVAL if you attempt to use RLIM_INFINITY.
1993+
// As per setrlimit(2), OPEN_MAX must be used instead.
1994+
nbr_files.rlim_cur = MIN(OPEN_MAX, nbr_files.rlim_cur);
1995+
status = setrlimit(RLIMIT_NOFILE, &nbr_files);
1996+
}
1997+
#endif // __APPLE__
19951998
if (status != 0) {
19961999
log_info(os)("os::init_2 setrlimit failed: %s", os::strerror(errno));
19972000
}

0 commit comments

Comments
 (0)