RFR: 8366154: Validate thread type requirements in debug commands

Kerem Kat krk at openjdk.org
Mon Sep 1 11:42:17 UTC 2025


Prevents segmentation faults during `gdb` sessions. The crashes were caused by the `ResourceMark` constructor being called on a native thread, which is not supported. This happened when invoking debug commands that require a `Thread` or `JavaThread` context from an incorrect thread type.

### Solution

This change introduces `onThread()` and `onJavaThread()` helper methods to the `Command` class. These methods validate the thread context and ensure `ResourceMark` is only created when on a valid VM thread. All thread-dependent debug commands now use these guards to validate the context, printing a clear error and exiting gracefully upon failure.

### Testing

Manually verified using `gdb` by calling the modified commands (`ps`, `universe`, `pns`, etc.) from different thread contexts (native, Java, and non-java threads) to ensure they fail gracefully with an error message instead of crashing the debug session.

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

Commit messages:
 - Update src/hotspot/share/utilities/debug.cpp
 - 8366154: Validate thread type requirements in debug commands

Changes: https://git.openjdk.org/jdk/pull/27033/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27033&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8366154
  Stats: 63 lines in 1 file changed: 45 ins; 4 del; 14 mod
  Patch: https://git.openjdk.org/jdk/pull/27033.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27033/head:pull/27033

PR: https://git.openjdk.org/jdk/pull/27033


More information about the hotspot-dev mailing list