Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/sharedRuntime.cpp @ 14230:b9b6934ad75c
8029873: compiler/uncommontrap/TestStackBangRbp.java crashes with SIGSEGV
Summary: May end up in uncommon trap blob/deopt blob with unguarded stack
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Wed, 08 Jan 2014 09:49:31 +0100 |
parents | 22ae97935e05 |
children | 7c0122ed05fb |
comparison
equal
deleted
inserted
replaced
14229:d16be2b85802 | 14230:b9b6934ad75c |
---|---|
492 thread->set_is_method_handle_return(nm->is_method_handle_return(return_address)); | 492 thread->set_is_method_handle_return(nm->is_method_handle_return(return_address)); |
493 // native nmethods don't have exception handlers | 493 // native nmethods don't have exception handlers |
494 assert(!nm->is_native_method(), "no exception handler"); | 494 assert(!nm->is_native_method(), "no exception handler"); |
495 assert(nm->header_begin() != nm->exception_begin(), "no exception handler"); | 495 assert(nm->header_begin() != nm->exception_begin(), "no exception handler"); |
496 if (nm->is_deopt_pc(return_address)) { | 496 if (nm->is_deopt_pc(return_address)) { |
497 // If we come here because of a stack overflow, the stack may be | |
498 // unguarded. Reguard the stack otherwise if we return to the | |
499 // deopt blob and the stack bang causes a stack overflow we | |
500 // crash. | |
501 bool guard_pages_enabled = thread->stack_yellow_zone_enabled(); | |
502 if (!guard_pages_enabled) guard_pages_enabled = thread->reguard_stack(); | |
503 assert(guard_pages_enabled, "stack banging in deopt blob may cause crash"); | |
497 return SharedRuntime::deopt_blob()->unpack_with_exception(); | 504 return SharedRuntime::deopt_blob()->unpack_with_exception(); |
498 } else { | 505 } else { |
499 return nm->exception_begin(); | 506 return nm->exception_begin(); |
500 } | 507 } |
501 } | 508 } |