RFR(S): 8028412 - AsyncGetCallTrace() is broken on x86 in JDK7u40

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Wed Nov 27 02:30:32 PST 2013


Hi Markus,

The fix looks Ok.

It'd be helpful if Oleg and the Solaris Studio guys could confirm this 
fix works fine for them.
I've added Oleg and Nik to the CC-list.
They might request a link to the Solaris or Linux binaries.

Thanks,
Serguei


On 11/27/13 1:47 AM, Markus Gronlund wrote:
>
> Greetings,
>
> Kindly asking for reviews for the following change:
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8028412
>
> Webrev: http://cr.openjdk.java.net/~mgronlun/8028412/webrev01/ 
> <http://cr.openjdk.java.net/%7Emgronlun/8028412/webrev01/>
>
> Description:
>
> AsynchGetCallTrace() uses platform specific code for stack frame 
> traversals.
>
> On x86, there currently exist a defensive construct that practically 
> disallows stack traversal over entry_frame code stubs, such as 
> StubRoutine(1) frames:
>
> src/cpu/x86/vm/frame_x86.cpp b/src/cpu/x86/vm/frame_x86.cpp:
>
> bool frame::safe_for_sender(JavaThread* thread)  {
>
> ...
>
> if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) {
>   //assert(0, "Invalid frame_size");
>
>  return false;
> }
>
> ...
>
> Since entry frames (such as StubRoutine(1)) have a frame size of 0, 
> the code returns prematurely.
>
> Fix is to move this frame size check post handling of 
> is_entry_frame(),  where the code_stubs are processed.
>
> Testing completed:
>
> Sun Studio Profiler reproducer testcase
>
> SpecJBB2005
>
> Kitchensink
>
> Thanks
> Markus
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20131127/4cda0aa6/attachment-0001.html 


More information about the serviceability-dev mailing list