RFR (S): 8239895: assert(_stack_base != 0LL) failed: Sanity check

David Holmes david.holmes at oracle.com
Tue Mar 31 05:18:24 UTC 2020


Bug: https://bugs.openjdk.java.net/browse/JDK-8239895
webrev: http://cr.openjdk.java.net/~dholmes/8239895/webrev/

Prior to JDK-8238988 there were uses of stack_base() which checked it 
was initialized, and there was a raw use of _stack_base in 
on_local_stack() that did not need it to be initialized (because it may 
not be). After JDK-8238988 both cases call is_in_stack_range() which 
uses stack_base() and so asserts that the stack base is initialized in 
all cases. This leads to the assertion failures when the _stack_base is 
not initialised. The fix has three parts:

1. Rename is_in_full_stack to is_in_full_stack_checked - as it checks 
_stack_base is initialized via an assertion.

2. Add a new is_in_full_stack which doesn't use any assertions.

3. Update all the uses of stack_base() prior to JDK-8238988 that were 
changed to call is_in_full_stack, to now call is_in_full_stack_checked. 
There are not many of them. (The corollary to that is that all old calls 
to on_local_stack() call the new unchecked is_in_full_stack.)

Here's the webrev for JDK-8238988 for comparison if desired:

http://cr.openjdk.java.net/~dholmes/8238988/webrev/

I also backed out the assertion changes that I made under:

https://bugs.openjdk.java.net/browse/JDK-8241043

as they were failing due to the use of get_thread_name(). I've filed a 
separate RFE for that issue:

https://bugs.openjdk.java.net/browse/JDK-8241403

Testing: tiers 1 - 3

Thanks,
David



More information about the hotspot-runtime-dev mailing list