From e63499d66d69a8cfa404161131104325263a45f4 Mon Sep 17 00:00:00 2001 From: Andrew Lu Date: Fri, 8 Dec 2023 02:10:37 +0000 Subject: [PATCH] 8217475: Unexpected StackOverflowError in "process reaper" thread Backport-of: a376fb77201701e73b540713b4ce067c7c9e8642 --- .../share/classes/java/lang/ProcessHandleImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 3eb6ba52e3e..a179363c4df 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -87,8 +87,12 @@ final class ProcessHandleImpl implements ProcessHandle { ThreadGroup tg = Thread.currentThread().getThreadGroup(); while (tg.getParent() != null) tg = tg.getParent(); ThreadGroup systemThreadGroup = tg; + + // For a debug build, the stack shadow zone is larger; + // Increase the total stack size to avoid potential stack overflow. + int debugDelta = "release".equals(System.getProperty("jdk.debug")) ? 0 : (4*4096); final long stackSize = Boolean.getBoolean("jdk.lang.processReaperUseDefaultStackSize") - ? 0 : REAPER_DEFAULT_STACKSIZE; + ? 0 : REAPER_DEFAULT_STACKSIZE + debugDelta; ThreadFactory threadFactory = grimReaper -> { Thread t = new Thread(systemThreadGroup, grimReaper,