RFR(S): 8020753: pthread_get_stacksize_np() workaround for OS X 10.9 (round 2)

Gerard Ziemski gerard.ziemski at oracle.com
Thu Oct 24 07:51:22 PDT 2013


Please review this proposed workaround (round 2) for OS X 10.9 (Mavericks)

Description:

On Mac Os X 10.9 (Mavericks) the pthread_get_stacksize_np() API returns 
128 pages for both main (primodial, primary - ie. the one created by the 
OS itself) and secondary threads, when in fact 2048 pages are available 
for the main thread. pthread_get_stacksize_np() correctly returns 2048 
pages for main thread on 10.8, 10.7, 10.6 and probably all previous OS X 
versions.

An issue has been filed with Apple, but in the meantime we need to 
substitute 2048 pages whenever pthread_get_stacksize_np() returns 
anything else (ie. 128) on main thread. The workaround is only active if 
the kernel version shows we are running on 10.9 or later (the workaround 
will have to be modified once Apple fixes the issue)

The workaround uses hardcoded value of 2048 pages for main thread, because:

1. The correct value can in fact be found at runtime using signals 
(please see my test case attached to the bug's JDK issue), however, such 
code needs signal handlers and also takes about 3.5 ms, so it's probably 
not a viable solution.

2. According to 
https://developer.apple.com/library/mac/documentation/cocoa/conceptual/Multithreading/CreatingThreads/CreatingThreads.html 
that's the size of the main thread for OS X.


Testing:

Issue's own test, UTE vm.quick and nsk.stack


References:

http://cr.openjdk.java.net/~hseigel/8020753/ 
<http://cr.openjdk.java.net/%7Ehseigel/8020753/>
https://bugs.openjdk.java.net/browse/JDK-8020753


cheers



More information about the hotspot-dev mailing list