8160411: SIGSEGV in frame::safe_for_sender on incomplete DeoptimizationBlob frame

Add range check for sender_sp

Reviewed-by: aph, dcubed
This commit is contained in:
Dean Long 2016-10-21 17:51:33 -07:00
parent 0520f59743
commit a8a3dae37c
2 changed files with 8 additions and 0 deletions

View File

@ -142,6 +142,10 @@ bool frame::safe_for_sender(JavaThread *thread) {
}
sender_sp = _unextended_sp + _cb->frame_size();
// Is sender_sp safe?
if ((address)sender_sp >= thread->stack_base()) {
return false;
}
sender_unextended_sp = sender_sp;
sender_pc = (address) *(sender_sp-1);
// Note: frame::sender_sp_offset is only valid for compiled frame

View File

@ -140,6 +140,10 @@ bool frame::safe_for_sender(JavaThread *thread) {
}
sender_sp = _unextended_sp + _cb->frame_size();
// Is sender_sp safe?
if ((address)sender_sp >= thread->stack_base()) {
return false;
}
sender_unextended_sp = sender_sp;
// On Intel the return_address is always the word on the stack
sender_pc = (address) *(sender_sp-1);