review (S) for 6936709: AsyncGetCallTrace doesn't handle inexact stack walking properly
Tom Rodriguez
tom.rodriguez at oracle.com
Thu Apr 1 13:03:39 PDT 2010
http://cr.openjdk.java.net/~never/6936709
This is for hs17 and hs18.
6936709: AsyncGetCallTrace doesn't handle inexact stack walking properly
Reviewed-by:
When trying to stack walk a frame for AsyncGetCallTrace there is
existing logic that tries to make sure that the current pc in the
frame maps some PcDesc so that the vframeStream logic will properly
walk it. That code uses pc_desc_at to perform the lookup which
requires an exact match. Since AsyncGetCallTrace is driven by a timer
there's no guarantee that the pc of the topmost frame is pointing at a
PcDesc. There's is code that tries to handle this but since it's
logic is reversed it never triggering. This means that when we go to
walk the stack the vframeStream code won't find a PcDesc and it will
report 0 as the bci for that frame. The fix is to correct the
AsyncGetCallTrace logic to correctly update the pc in the frame to
point at a valid PcDesc. I also corrected some signatures and
restructured the logic a bit to make it clearer. Tested with the Sun
Studio Analyzer in user mode.
src/share/vm/prims/forte.cpp
More information about the hotspot-compiler-dev
mailing list