RFR: 8340491: Thread stack-base assertion should report which thread has the un-set stack [v2]
Aleksey Shipilev
shade at openjdk.org
Fri Sep 20 06:43:20 UTC 2024
On Fri, 20 Sep 2024 06:39:36 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> Please review this simple enhancement to an assertion so we can identify which thread had the problem.
>>
>> I had to move the function to the cpp file due to include file issues.
>>
>> We are limited in what we can print due to this being used very early in the thread initialization process - in particular no ResourceMarks are possible so we can't print the name.
>>
>> Testing:
>> - tier 5 (used to debug [JDK-8340401](https://bugs.openjdk.org/browse/JDK-8340401))
>> - tiers 1-3 sanity
>>
>> Thanks
>
> David Holmes has updated the pull request incrementally with one additional commit since the last revision:
>
> Keep inline version for release builds
Nitpicking...
src/hotspot/share/runtime/thread.hpp line 535:
> 533: public:
> 534: // Stack overflow support
> 535: address stack_base() const DEBUG_ONLY(;) NOT_DEBUG({ return _stack_base; })
I think it is a bit cleaner to "just" outline the checking method like:
thread.hpp:
address stack_base() const { assert_stack_base(); return _stack_base; }
void assert_stack_base() const NOT_DEBUG_RETURN;
thread.cpp:
#ifdef ASSERT
void Thread::assert_stack_base() const {
// Note: can't report Thread::name() here as that can require a ResourceMark which we
// can't use because this gets called too early in the thread initialization.
assert(_stack_base != nullptr, "Stack base not yet set for thread id:%d (0 if not set)",
osthread() != nullptr ? osthread()->thread_id() : 0);
}
#endif
-------------
PR Review: https://git.openjdk.org/jdk/pull/21102#pullrequestreview-2317392718
PR Review Comment: https://git.openjdk.org/jdk/pull/21102#discussion_r1768064705
More information about the hotspot-runtime-dev
mailing list