> Hi > Could you please review the the fix that add locks information into SA jhsdb > stack --mixed output. > > Here is the motivation for this rfe and explanation why I add it into SA now. > > The information about current owners of Hotspot Mutex is often very useful > for dealock investigations. > > The jcmd usually doesn't work because VM can't reach or exit safepoints. So > it doesn't respond to jcmd. > > The SA 'jstack --mixed' provides information about stacktraces on Java and > non-Java Threads. So having information about locks along with stack traces > might significantly help to identify issues. > > The gdb allows to provide stacktraces, but the debug symbols are required to > get info about locks. These symbols are often absent during execution. > Also the debugger solution is OS specifc. > > The significant part of fix is refacotorrng of mutex_array to be vmStructs > compatible. > > The adding support of non-JavaThreads into SA might be implemented later to > obtain more info about their names. > The example of output: > > [2024-11-06T21:32:48.897414435Z] Gathering output for process 1620563 > Attaching to process ID 1620533, please wait... > Debugger attached successfully. > Server compiler detected. > JVM version is 24-internal-adhoc.lmesnik.open > Deadlock Detection: > > No deadlocks found. > > Internal VM Mutex Threads_lock is owned by Unknnown thread (Might be non-Java > Thread) with address: 0x00007f8cf825b190 > Internal VM Mutex Compile_lock is owned by LockerThread with address: > 0x00007f8cf8309a00 > ----------------- 1620559 ----------------- > "C1 CompilerThread4" https://github.com/openjdk/jdk/pull/28 daemon prio=9 > tid=0x00007f8c300566a0 nid=1620559 runnable [0x0000000000000000] > java.lang.Thread.State: RUNNABLE > JavaThread state: _thread_blocked > 0x00007f8cff11e88d syscall + 0x1d > 0x00007f8cfe6c99de LinuxWaitBarrier::wait(int) + 0x8e > 0x00007f8cfe2be409 SafepointMechanism::process(JavaThread*, bool, bool) + 0x79 > 0x00007f8cfd53ea91 ThreadInVMfromNative::ThreadInVMfromNative(JavaThread*) + > 0xc1 > 0x00007f8cfd534a00 ciEnv::cache_jvmti_state() + 0x30 > 0x00007f8cfd679614 CompileBroker::invoke_compiler_on_method(CompileTask*) + > 0x204 > 0x00007f8cfd67adc8 CompileBroker::compiler_thread_loop() + 0x5c8 > 0x00007f8cfdb4426c JavaThread::thread_main_inner() + 0xcc > 0x00007f8cfe5a0bbe Thread::call_run() + 0xbe > 0x00007f8cfe16813b thread_native_entry(Thread*) + 0x12b > ..... > ----------------- 1620554 ----------------- > "LockerThread" https://github.com/openjdk/jdk/pull/31 prio=5 > tid=0x00007f8cf8309a00 nid=1620554 waiting on condition ...
Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: tests using osthread fixed ------------- Changes: - all: https://git.openjdk.org/jdk/pull/22171/files - new: https://git.openjdk.org/jdk/pull/22171/files/2f1e3d71..056ec87a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=22171&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22171&range=04-05 Stats: 4 lines in 2 files changed: 0 ins; 0 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/22171.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22171/head:pull/22171 PR: https://git.openjdk.org/jdk/pull/22171