On Sun, 11 Jan 2026 07:33:12 GMT, Yasumasa Suenaga <[email protected]> wrote:
>> SA does not handle signal handler frame in mixed jstack as following: >> >> >> ----------------- 1789 ----------------- >> "main" #1 prio=5 tid=0x00007f654c010000 nid=0x6fd runnable >> [0x00007f6551c0b000] >> java.lang.Thread.State: RUNNABLE >> JavaThread state: _thread_in_native >> 0x00007f6551c0e735 __GI_abort + 0x8b >> 0x00007f65511feb39 _ZN2os5abortEbPvPKv + 0x19 >> 0x00007f6551427569 >> _ZN7VMError14report_and_dieEiPKcS1_P13__va_list_tagP6ThreadPhPvS7_S1_im + >> 0x579 >> 0x00007f6551427deb _ZN7VMError14report_and_dieEP6ThreadjPhPvS3_PKcz + 0x8b >> 0x00007f6551427e1e _ZN7VMError14report_and_dieEP6ThreadjPhPvS3_ + 0x1e >> 0x00007f6551209950 JVM_handle_linux_signal + 0x1c0 >> 0x00007f65511fd538 _ZL13signalHandleriP7siginfoPv + 0x38 >> 0x00007f6551c27290 ???????? >> 0x00007f653400f890 * NativeSEGV.doSEGV() bci:0 (Interpreted frame) >> 0x00007f6534009c43 * NativeSEGV.main(java.lang.String[]) bci:76 line:37 >> (Interpreted frame) >> 0x00007f6534000849 <StubRoutines> >> 0x00007f6550e847e9 >> _ZN9JavaCalls11call_helperEP9JavaValueRK12methodHandleP17JavaCallArgumentsP6Thread >> + 0x3b9 >> 0x00007f6550eff1ba >> _ZL17jni_invoke_staticP7JNIEnv_P9JavaValueP8_jobject11JNICallTypeP10_jmethodIDP18JNI_ArgumentPusherP6Thread.isra.65.constprop.193 >> + 0x1ba >> 0x00007f6550f01824 jni_CallStaticVoidMethod + 0x164 >> 0x00007f6551e0582d JavaMain + 0xe4d >> 0x00007f6551c7f464 start_thread + 0x2e4 >> >> 0x7f6551c27290 is a signal handler frame, and its caller is native frame. >> However jstack reports the caller is Java frame (`NativeSEGV.doSEGV()`). >> >> It should be like following: >> >> >> 0x00007fdbd170321a JVM_handle_linux_signal + 0x42a >> 0x00007fdbd267b290 <signal handler called> >> 0x00007fdbc7ecb3b1 Java_NativeSEGV_doSEGV + 0x18 >> 0x00007fdbb67468ba * NativeSEGV.doSEGV() bci:0 (Interpreted frame) >> >> >> This is long standing bug (since JDK 9 at least). > > Yasumasa Suenaga 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 five additional > commits since the last revision: > > - Merge remote-tracking branch 'origin/master' into jhsdb-jstack-sighandler > - Merge remote-tracking branch 'origin/master' into jhsdb-jstack-sighandler > - Merge remote-tracking branch 'origin/master' into jhsdb-jstack-sighandler > - Fix > - 8374482: SA does not handle signal handler frame in mixed jstack In worst case, we cannot unwind any call stacks under signal handler with exception due to referring invalid register value. https://github.com/openjdk/jdk/pull/29023#issuecomment-3734578612 is one of examples. "main" #3 prio=5 tid=0x00007f556002aa10 nid=1231 runnable [0x00007f5567d0a000] java.lang.Thread.State: RUNNABLE JavaThread state: _thread_in_native 0x00007f5569509735 __GI_abort + 0x8b 0x00007f55680eadd5 os::abort(bool, void const*, void const*) [clone .cold] + 0x4 0x00007f5568efa717 VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void const*, void const*, char const*, int, unsigned long) + 0x4f7 0x00007f5568efaf1b VMError::report_and_die(Thread*, unsigned int, unsigned char*, void const*, void const*, char const*, ...) + 0x8a 0x00007f5568efaf70 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void const*, void const*) + 0x50 0x00007f5568d2ada3 JVM_handle_linux_signal + 0x2d2 0x00007f55695222c0 ???????? java.lang.NullPointerException: Cannot invoke "sun.jvm.hotspot.debugger.Address.addOffsetTo(long)" because "this.cfa" is null Signal handler should be handled as a special case because we cannot use normal unwind method on signal handler to get caller (problematic frame) registers (SP/BP/IP). Ideally the fix in [here](https://github.com/YaSuenag/jdk/compare/jhsdb-jstack-sighandler...YaSuenag:jdk:mixed-jstack-fix-for-optimized-code) should be included as I commented before, but I agree with you that it could increase technical debt... ------------- PR Comment: https://git.openjdk.org/jdk/pull/29023#issuecomment-3752660516
