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