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