< prev index next >

src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp

Print this page
rev 13436 : 8186286: [BSD] Primary thread's stack size is reported incorrectly
Reviewed-by: shade, stuefe

*** 906,915 **** --- 906,921 ---- void *stacktop = pthread_get_stackaddr_np(self); *size = pthread_get_stacksize_np(self); // workaround for OS X 10.9.0 (Mavericks) // pthread_get_stacksize_np returns 128 pages even though the actual size is 2048 pages if (pthread_main_np() == 1) { + // At least on Mac OS 10.12 we have observed stack sizes not alligned + // to pages boundries. This can be provoked by e.g. setrlimit() (ulimit -s xxxx in the + // shell). Apparently Mac OS actually rounds upwards to next multiple of page size, + // however, I round downwards here to be on the safe side. + *size = align_down(*size, getpagesize()); + if ((*size) < (DEFAULT_MAIN_THREAD_STACK_PAGES * (size_t)getpagesize())) { char kern_osrelease[256]; size_t kern_osrelease_size = sizeof(kern_osrelease); int ret = sysctlbyname("kern.osrelease", kern_osrelease, &kern_osrelease_size, NULL, 0); if (ret == 0) {
< prev index next >