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