RFR: 8146416: java.lang.OutOfMemoryError triggers: assert(current_bci == 0) failed: bci isn't zero for do_not_unlock_if_synchronized
Jamsheed C m
jamsheed.c.m at oracle.com
Wed Jun 1 17:29:14 UTC 2016
Hi Roland,
On 6/1/2016 6:26 PM, Roland Westrelin wrote:
> noticed you added a
> test case (DeoptReallocFailureUncommonTrap). Is that one expected to
> fail with the same assert as well? I tried it but it seems to run fine.
>
> Backing up a bit: the issue triggered by your other test case is that
> when the deoptimization mode is Unpack_exception,
> vframeArrayElement::unpack_on_stack() forces the return to the
> interpreter to not go through the deopt entries but straight to the
> exception handling code with a pending exception and that's what's
> causing the assert to fire, right?
you are right, it works fine due to deopt_entry pending exception
handling.. i had looked at this earlier, and just forgot about this due
to this comment
IRT_ENTRY(void, InterpreterRuntime::throw_pending_exception(JavaThread*
thread))
assert(thread->has_pending_exception(), "must only ne called if
there's an exception pending");
// nothing to do - eventually we should remove this code entirely
(see comments @ call sites)
IRT_END
Yes you are right, making all deopt realloc failure cases to take this
path is probably right thing to do. may be we should move the pending
exception code a bit up (above jvmci locking code)
also remove this comment " // nothing to do - eventually we should
remove this code entirely (see comments @ call sites)" too..
Best Regards,
Jamsheed
More information about the hotspot-compiler-dev
mailing list