RFR: 8376269: Mixed jstack cannot find function in vDSO [v4]

Yasumasa Suenaga ysuenaga at openjdk.org
Tue Feb 3 10:24:43 UTC 2026


> Some functions / signal trampoline would be provided by vDSO in Linux. However SA cannot find symbols in it because it is not a regular ELF, it is on the memory only.
> For example, mixed jstack could not decode the symbol in the coredump crashed in gettimeofday(2) as following:
> 
> 
> 0x00007faae3dd0818      VMError::report_and_die(Thread*, unsigned int, unsigned char*, void const*, void const*) + 0x58
> 0x00007faae3aff1ba      JVM_handle_linux_signal + 0x42a
> 0x00007faae4ad9290      <signal handler called>
> 0x00007faae4cd8e69              ????????
> 0x00007faaca78ffa1      <nep_invoker_blob>
> 0x00007faaca73fd48      * java.lang.invoke.LambdaForm$MH+0x0000000028156c00.invoke(java.lang.Object, long, long, long) bci:12 (Interpreted frame)
> 
> 
> It should be:
> 
> 
> 0x00007fb5841d0818      VMError::report_and_die(Thread*, unsigned int, unsigned char*, void const*, void const*) + 0x58
> 0x00007fb583eff1ba      JVM_handle_linux_signal + 0x42a
> 0x00007fb584fd9290      <signal handler called>
> 0x00007fb5851d8e69      __cvdso_gettimeofday_data.constprop.0 + 0x99
> 0x00007fb56a78f321      <nep_invoker_blob>
> 0x00007fb56a73fd48      * java.lang.invoke.LambdaForm$MH+0x000000000e156c00.invoke(java.lang.Object, long, long, long) bci:12 (Interpreted frame)
> 
> 
> Some platforms (Ubuntu 24.04 and Fedora 43 at least) provide vDSO binary in `/lib/modules/<kernel version>/vdso`. This patch attempts to load it if we can refer it because we want to use debuginfo of vDSO if possible. Otherwise load vDSO memory.

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 eight additional commits since the last revision:

 - Update testcase to skip if kernel debuginfo is not available
 - Merge branch 'master' into JDK-8376269
 - Add new function to handle vDSO
 - Remove unneeded change
 - Remove 32 bit support
 - Update src/jdk.hotspot.agent/linux/native/libsaproc/ps_core.c
   
   Co-authored-by: Chris Plummer <chris.plummer at oracle.com>
 - Update src/jdk.hotspot.agent/linux/native/libsaproc/ps_core.c
   
   Co-authored-by: Chris Plummer <chris.plummer at oracle.com>
 - 8376269: Mixed jstack cannot find function in vDSO

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/29400/files
  - new: https://git.openjdk.org/jdk/pull/29400/files/38daaa32..264250a9

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29400&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29400&range=02-03

  Stats: 49993 lines in 766 files changed: 23834 ins; 16528 del; 9631 mod
  Patch: https://git.openjdk.org/jdk/pull/29400.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29400/head:pull/29400

PR: https://git.openjdk.org/jdk/pull/29400


More information about the serviceability-dev mailing list