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