Conflicting use of StackWatermark in StackWalker vs GC?

Roman Kennke rkennke at redhat.com
Tue Feb 9 14:08:53 UTC 2021


I am getting the same failure with ZGC:

CONF=linux-x86_64-server-fastdebug make run-test 
TEST=java/lang/StackWalker 
TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseZGC 
-XX:ZCollectionInterval=0.01"


> Hello all,
> 
> When running StackWalker tests with 'aggressive' Shenandoah mode (i.e. 
> run GCs all the time, even if there is no work), then I observe crashes 
> like this:
> 
> #  Internal Error 
> (/home/rkennke/src/openjdk/jdk/src/hotspot/share/runtime/stackWatermark.cpp:178), 
> pid=549168, tid=549230
> #  assert(is_frame_safe(f)) failed: Frame must be safe
> 
> Full hs_err:
> http://cr.openjdk.java.net/~rkennke/hs_err_pid549168.log
> 
> I strongly suspect that this is happening because of StackWalker's use 
> of StackWatermark which conflicts with the GC's own use of StackWalker. 
> IOW, it asserts that the frame has been processed, but the GC is still 
> on it.
> 
> Are we missing some coordination between StackWalker and the GC here?
> 
> It can be reproduced using:
> CONF=linux-x86_64-server-fastdebug make run-test 
> TEST=java/lang/StackWalker 
> TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC 
> -XX:ShenandoahGCHeuristics=aggressive"
> 
> Thanks,
> Roman




More information about the hotspot-gc-dev mailing list