RFR(S) 8161598,,Kitchensink fails: assert(nm->insts_contains(original_pc)) failed: original PC must be in nmethod/CompiledMethod

dean.long at oracle.com dean.long at oracle.com
Thu Aug 4 22:28:55 UTC 2016


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

http://cr.openjdk.java.net/~dlong/8161598/webrev/

Sorry, this issue is Confidential.  The problem is similar to 8029441, 
where we suspend a thread and use pd_get_top_frame_for_profiling() to 
get the top frame for stack walking.  The problem is "last Java frame" 
anchor frames on x86. In lots of places we do not store last_Java_pc.  
This is OK in the synchronous stack walk case done by the current 
thread.  But in the asynchronous case, there are small windows where 
it's not always safe to get PC from sp[-1].

The solution is not to treat x86 anchor frames as "always walkable".  
Instead, we follow the example of sparc and make them walking by filling 
in last_Java_pc when it's safe.

I went for the minimal fix, resetting clear_pc to true in 
reset_last_Java_frame() but not changing the API and all the callers.  I 
can fix this if reviewers feel strongly about it.

dl



More information about the hotspot-runtime-dev mailing list