--- old/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Tue Oct 22 18:51:55 2013 +++ new/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Tue Oct 22 18:51:51 2013 @@ -828,6 +828,14 @@ pthread_t self = pthread_self(); void *stacktop = pthread_get_stackaddr_np(self); *size = pthread_get_stacksize_np(self); + // workaround for 10.9 (Mavericks) + // pthread_get_stacksize_np returns 128 pages even though the actual size is 2048 pages + if (pthread_main_np() == 1) { + #define DEFAULT_MAIN_THREAD_STACK_PAGES 2048 + if (*size < (DEFAULT_MAIN_THREAD_STACK_PAGES*(size_t)getpagesize())) { + *size = (DEFAULT_MAIN_THREAD_STACK_PAGES*getpagesize()); + } + } *bottom = (address) stacktop - *size; #elif defined(__OpenBSD__) stack_t ss;