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