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* 
   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)

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,

More information about the hotspot-compiler-dev mailing list