RFR: 8236569: -Xss not multiple of 4K does not work for the main thread on macOS
David Holmes
dholmes at openjdk.java.net
Sun May 30 03:03:11 UTC 2021
On Fri, 28 May 2021 21:55:24 GMT, Henry Jen <henryjen at openjdk.org> wrote:
> …d on macOS
>
> This patch simply round up the specified stack size to multiple of the system page size.
>
> Test is trivial, simply run java with -Xss option against following code. On MacOS, before the fix, running with `-Xss159k` and `-Xss160k` would get `7183` and `649` respectively. After fix, both would output `649`, while `-Xss161k` would be same as `-Xss164k` and see 691 as the output.
>
> ```code:java
> public class StackLeak {
> public int depth = 0;
> public void stackLeak() {
> depth++;
> stackLeak();
> }
>
> public static void main(String[] args) {
> var test = new StackLeak();
> try {
> test.stackLeak();
> } catch (Throwable e) {
> System.out.println(test.depth);
> }
> }
> }
src/java.base/macosx/native/libjli/java_md_macosx.m line 727:
> 725:
> 726: static size_t alignUp(size_t stack_size) {
> 727: long page_size = sysconf(_SC_PAGESIZE);
In hotspot we use `getpagesize()`. There is also a guard for a very large stack (within a page of SIZE_MAX) so that rounding up does not produce zero.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4256
More information about the core-libs-dev
mailing list