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

Yasumasa Suenaga ysuenaga at openjdk.org
Thu Jan 29 00:17:12 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 incrementally with two additional commits since the last revision:

 - 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>

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/29400/files
  - new: https://git.openjdk.org/jdk/pull/29400/files/e27802e5..ecbc096e

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

  Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 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