RFR : [XS] 8219082 : jdk/jfr/event/runtime/TestShutdownEvent.java failed in validateStackTrace()
mikhailo.seledtsov at oracle.com
mikhailo.seledtsov at oracle.com
Fri Aug 9 21:00:44 UTC 2019
Looks good to me,
Thank you,
Misha
On 8/9/19 6:56 AM, Baesken, Matthias wrote:
>
> Hello, please review this small test adjustment .
>
> The TestShutdownEvent.java JFR test fails now and then in the
> sub-test “TestVMCrash” .
>
> Error is in the stack validation , it finds sometimes a stack with
> no frames .
>
> at
> jdk.jfr.event.runtime.TestShutdownEvent.validateStackTrace(TestShutdownEvent.java:128)
>
> at
> jdk.jfr.event.runtime.TestShutdownEvent$TestVMCrash.verifyEvents(TestShutdownEvent.java:172)
>
>
> Our conclusion so far is that it is currently not 100% reliable to get
> a stack trace in this case using vframeStream in
> jfrStackTraceRepository.cpp
>
> (forced crash with Unsafe + event generation using EventShutdown late
> in VMError.cpp ) .
> Reason is that we might get compiled frames on the stack and
> then the vframeStream – based solution does not work ( when
> running with -Xcomp it always fails).
>
> See also the comments of our JIT expert Martin in the bug :
>
> “JfrStackTrace uses vframeStream to retrieve the stack frames.
> This works fine if a native frame is on top (because we have the last
> Java frame linked in the JavaThread object).
> That's why the tests works when executed with -Xint. The crashing
> method is native in this case.
>
> The situation is different when there's a compiled frame on top.
> JIT compilers usually inline Unsafe accesses as instrinsics. So the
> crashing instruction is just in the middle of a compiled method.
> The vframeStream API would require a PC for which additional
> information is available (see CodeEmitInfo for C1 or JVMState for C2).
> That's not the case for an illegal Unsafe access which simply yields
> undefined behavior. Vframes are not supported in this case so the
> stack trace is empty.
>
> It is possible to get a native stack trace (see
> VMError::print_native_stack which doesn't use vframes) for hs_err
> files. Compiled frames are only shown as single
>
> frames even if multiple Java frames are included due to inlining.
>
> Note that the test always fails when using -Xcomp. So it doesn't make
> any sense to expect a non-empty vframe based stack trace when a
> compiled frame is on top. “
>
> My first idea was to run the test with -Xint but its probably not
> such a good idea ; so better for now remove the unreliable check
> ( + add a comment ).
>
> Thanks, Matthias
>
> Bug/webrev :
>
> https://bugs.openjdk.java.net/browse/JDK-8219082
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8219082.1/
>
More information about the hotspot-dev
mailing list