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