RFR: 8366154: Validate thread type requirements in debug commands [v4]
Kerem Kat
krk at openjdk.org
Wed Sep 10 10:09:46 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.
Kerem Kat has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
- Merge branch 'master' into JDK-8366154
- refine comment
- remove redundant proto for findpc
- add include for global placement new
- remove onJavaThread and check JavaThread::active null where needed
- Update src/hotspot/share/utilities/debug.cpp
Co-authored-by: Francesco Andreuzzi <andreuzzi.francesco at gmail.com>
- 8366154: Validate thread type requirements in debug commands
Prevent crashes when calling interactive debug commands from native
or non-java threads.
Add onThread() and onJavaThread() methods to the Command class to
validate the current thread type. Update debug commands to use these
checks, printing an error and exiting gracefully upon failure.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/27033/files
- new: https://git.openjdk.org/jdk/pull/27033/files/d19470e7..f75de4bd
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=27033&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=27033&range=02-03
Stats: 23617 lines in 1156 files changed: 11615 ins; 7226 del; 4776 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