On Mon, 26 May 2025 08:18:19 GMT, Markus Grönlund <mgron...@openjdk.org> wrote:

>> Stack walking that occurs not at a safepoint, but during longer periods of a 
>> thread being in native. We can't walk the stack directly when we're in 
>> native, as we can't properly walk stacks in signal handlers. So we defer 
>> this to a separate thread.
>
> A thread in native is still stackwalked at a safe location, a safepoint code 
> position.
> 
> It's guaranteed by the last java frame (ljf).

Yes, but it might be an indeterminate time between entering and exiting the 
native thread state. So I need to walk them in between. Your sampler 
implementation also walks threads in native state.

>> Because we have a safepoint before the thread goes into native (as far as I 
>> understand). I'll remove the code above, because it is therefore not needed.
>
> There is no safepoint when a thread goes from Java to native.
> 
> It's done on the way back.

Ok, then I need my check. The check ensures that I only walk stacks that have 
the same top Java frame as the current frame (which is by design related to a 
stack trace in native). I don't want to walk non-native thread state stack 
traces here.

This is implemented to ensure that we also sample threads while they are in a 
long native period.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2106829651
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2106825442

Reply via email to