On Sat, 24 May 2025 06:57:56 GMT, Alan Bateman <al...@openjdk.org> wrote:

> Updates the thread dump generated by HotSpotDiagnosticMXBean.dumpThreads and 
> jcmd Thread.dump_to_file to include thread state and lock information. Also 
> update the HotSpotDiagnosticMXBean.dumpThreads API description to link to a 
> description of the JSON format dump as that format is intended to be 
> parseable/read by tools.
> 
> This PR is dependent on 
> [pull/25425](https://github.com/openjdk/jdk/pull/25425). As noted in that PR, 
> the changes accumulated in the loom repo, and have been split up to make it 
> easier to review.
> 
> The changes include some re-implementation of ThreadDumper. This is because 
> it used PrintStream and didn't fail if there was an I/O error, e.g. file 
> system full. Furthermore, the indentation to pretty print the json was 
> fragile and hard to maintain so this is changed to use a supporting writer 
> class to do this.
> 
> Test coverage is significantly expanded, including updating the test library 
> that is used by several tests to parse the thread dump.
> 
> Testing: tier1-6

src/hotspot/share/classfile/javaClasses.cpp line 2241:

> 2239: }
> 2240: 
> 2241: class jdk_internal_vm_ThreadLock: AllStatic {

All other class for java classes are declared in javaClasses.hpp. Wonder if 
runtime would accept a class declared in the cpp file.

src/hotspot/share/classfile/javaClasses.cpp line 5519:

> 5517: oop 
> java_util_concurrent_locks_AbstractOwnableSynchronizer::get_owner_threadObj(oop
>  obj) {
> 5518:   assert(_owner_offset != 0, "Must be initialized");
> 5519:   return obj->obj_field_acquire(_owner_offset);

Is this a preexisting bug? If yes we should have this fixed in a separate patch 
so it is eligible for backporting, etc.

src/java.base/share/classes/jdk/internal/vm/ThreadDumper.java line 247:

> 245:         var jsonWriter = new JsonWriter(textWriter);
> 246: 
> 247:         jsonWriter.startObject();  // top-level object

Is this anticipated to be used in early bootstrap so we use `startObject` 
`endObject` instead of using functional code or try-with-resources that create 
scopes?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25429#discussion_r2106087716
PR Review Comment: https://git.openjdk.org/jdk/pull/25429#discussion_r2106087007
PR Review Comment: https://git.openjdk.org/jdk/pull/25429#discussion_r2106088093

Reply via email to