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