RFR: 8340491: Thread stack-base assertion should report which thread has the un-set stack [v2]

David Holmes dholmes at openjdk.org
Fri Sep 20 06:49:49 UTC 2024


On Fri, 20 Sep 2024 06:39:35 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> 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
>
> This _is_ the way we do it in existing code, e.g.
> https://github.com/openjdk/jdk/blob/46b02f49bcc730d94e37cf17fa996fdd12bdb990/src/hotspot/share/runtime/stackWatermark.hpp#L105

So many ways to achieve the same thing ...

I would not want assert_stack_base in the public API.

I did need to fix the ifdef though.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21102#discussion_r1768071163


More information about the hotspot-runtime-dev mailing list