RFR 8157592: StackTraceLogging fails with stack overflow on 32-bit Windows
George Triantafillou
george.triantafillou at oracle.com
Thu Jun 16 19:22:35 UTC 2016
Hi David,
I did an experiment by printing the stack depth at smaller intervals and
running TestThrowable.java with
-XX:AbortVMOnException=java.lang.StackOverflowError. In one failing
run, there were 1888 recursions. Here's the stack of the failing thread
from the hs_err file:
Stack: [0x15980000,0x159d0000], sp=0x1598b9bc, free space=46k
If you divide by the stack size on windows 32, that amounts to
approximately 173 bytes per frame, which doesn’t seem unreasonable.
(gdb) print (0x159d0000-0x15980000)/1888
$2 = 173
Factor in that the frames are compiled, which use less space than
interpreted and whether the frames are compiled in time for the test to
run can also add variability. C2 optimizes stack usage more than C1,
and the test case appears to compile these methods with C1. Also, when
run with jtreg, there are frames on the stack for the jtreg test framework.
The stack usage for this test isn’t unreasonable. There’s no change to
stack usage that would have made this test fail now. It’s just normal
variability on 32-bit Windows:
java -XX:+PrintFlagsFinal -version | grep Stack | grep Pages
intx StackRedPages = 1
intx StackShadowPages = 9
intx StackYellowPages = 3
13*4k = 52k which results in stack overflow.
-George
On 6/9/2016 9:08 PM, David Holmes wrote:
> Hi George,
>
> On 10/06/2016 4:09 AM, George Triantafillou wrote:
>> Please review this small change to fix test failures on 32-bit Windows.
>>
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8157592
>> Open webrev: http://cr.openjdk.java.net/~gtriantafill/8157592/webrev/
>> <http://cr.openjdk.java.net/%7Egtriantafill/8157592/webrev/>
>>
>> TestThrowable.java: Added catch for intermittent StackOverflowError
>> errors on 32-bit Windows.
>
> This does not seem to be addressing the problem - why do we suddenly
> start getting SOE when running this test? I asked that question in the
> bug report. If something has changed to trigger this then we need to
> ensure that change was intended/desirable and then look at how to
> adjust the test - not simply catch the SOE and ignore it.
>
> Thanks,
> David
> -----
>
>
>> StackTraceLogging.java: Removed unused updateEnvironment method.
>>
>> Tested locally on 32-bit Windows as well as RBT.
>>
>> -George
>>
More information about the hotspot-runtime-dev
mailing list