RFR(S): 8054224: Recursive method that was compiled by C1 is unable to catch StackOverflowError
igor.veresov at oracle.com
Tue Aug 12 17:11:14 UTC 2014
On Aug 12, 2014, at 1:40 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:
> When processing a StackOverflowError, a call to SharedRuntime::compute_compiled_exc_handler() triggers another StackOverflowError which replaces the current exception and causes the frame to be unwounded. The exception cache is wrongly updated to record that a StackOverflowError at this pc should be handled by unwinding the stack. When the StackOverflowError propagates to the caller (same method at same pc), the caller unwinds when it should jump to the exception handler. Fixed by setting the exception cache only when the exception wasn’t replaced using the same check opto/runtime.cpp does.
More information about the hotspot-compiler-dev