RFR(S): 8008357: [sampling] assert(sender_blob->is_runtime_stub() || sender_blob->is_nmethod()) failed: Impossible call chain
Markus Grönlund
markus.gronlund at oracle.com
Mon Mar 4 23:48:23 PST 2013
Rickard,
Sorry, please forget about my first comments on the first assert:
"The comments on line 221-222 is are a bit confusion in association with the conditional and the follow-up assert on line 225. The comment outlines the layout and invariant for nmethods, but in the conditional (sender_blob->frame_size() <= 0), there is an assert that sender_blob is NOT an nmethod?"
This is of course correct, I read it wrongly. The assert is placed ok there.
Maybe just fix up the comments?
Cheers
Markus
-----Original Message-----
From: Markus Grönlund
Sent: den 5 mars 2013 08:37
To: Rickard Bäckman
Cc: serviceability-dev serviceability-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
Subject: RE: RFR(S): 8008357: [sampling] assert(sender_blob->is_runtime_stub() || sender_blob->is_nmethod()) failed: Impossible call chain
Rickard,
The comments on line 221-222 is are a bit confusion in association with the conditional and the follow-up assert on line 225. The comment outlines the layout and invariant for nmethods, but in the conditional (sender_blob->frame_size() <= 0), there is an assert that sender_blob is NOT an nmethod? This is a bit unclear. Also, the sentence is weird:
"if the frame size is 0 something (or less) is bad because every nmethod..."
Also, do you need that particular assert there? The same logic comes again in non-asserting code at line 234. Maybe just rework/remove the assert and weave in the real logic for that check?
Not a Reviewer.
Cheers
Markus
-----Original Message-----
From: Rickard Bäckman
Sent: den 5 mars 2013 08:08
To: serviceability-dev serviceability-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
Subject: Re: RFR(S): 8008357: [sampling] assert(sender_blob->is_runtime_stub() || sender_blob->is_nmethod()) failed: Impossible call chain
Anyone have time to look at this?
Thanks
/R
On Mar 1, 2013, at 10:27 AM, Rickard Bäckman wrote:
> Hi all,
>
> here comes another update to frame.safe_for_sender.
> If the PC at a place where the stack doesn't match the _frame_size we sometimes read an invalid return PC.
> In this case we read one that pointed into the Safepoint blob.
>
> We now pretty much guarded for all kind of blobs in safe_for_sender,
> so I've changed the method to not assert in the end but to do it the
> same was as the frame_sparc.cpp did it. Everything that is not a nmethod at the end of the method is not safe.
>
> I've also changed another check for a frame_size == 0 to frame_size <= 0 to make it somewhat more safer.
>
> The bug: http://bugs.sun.com/view_bug.do?bug_id=8008357
> Webrev: http://cr.openjdk.java.net/~rbackman/8008357/
>
> This webrev is for HS24.
>
> Thanks
> /R
More information about the serviceability-dev
mailing list