RFR 15: 8217475: Unexpected StackOverflowError in "process reaper" thread

David Holmes david.holmes at oracle.com
Sat Jul 11 13:28:01 UTC 2020



On 10/07/2020 12:09 am, Roger Riggs wrote:
> Hi,
> 
> I raised the debugDelta to 16k and so far (12hrs) have not seen any 
> failures.
> I'll push later today with 16k unless I hear any concerns.
> 
> Webrev: 
> http://cr.openjdk.java.net/~rriggs/webrev-process-stackoverflow-8217475-1/

Unfortunately failures are still happening after the push.

https://bugs.openjdk.java.net/browse/JDK-8249217

David
-----

> Thanks, Roger
> 
> 
> On 7/9/20 4:54 AM, David Holmes wrote:
>> Hi Roger,
>>
>> Looks good to me.
>>
>> Thanks,
>> David
>>
>> On 9/07/2020 6:51 am, Roger Riggs wrote:
>>> Please review a change to increase the size of the Process Reaper 
>>> stack for debug builds.
>>> This intermittent issue can be traced to the stack shadow page size 
>>> being larger
>>> in debug builds than in release builds. The problem has only been 
>>> spotted in debug builds.
>>>
>>> diff a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java 
>>> b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java
>>> --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java
>>> +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java
>>> @@ -85,12 +85,16 @@
>>>               doPrivileged((PrivilegedAction<Executor>) () -> {
>>>
>>>                   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 : 8192;
>>>                   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,
>>>                               "process reaper", stackSize, false);
>>>                       t.setDaemon(true);
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~rriggs/webrev-process-stackoverflow-8217475/
>>>
>>> Issue:
>>>     https://bugs.openjdk.java.net/browse/JDK-8217475
>>>
>>> Thanks, Roger
>>>
> 


More information about the core-libs-dev mailing list