We fixed mixed jstack failure when the call stack has frame in vDSO like 
`gettimeofday()` in [JDK-8376269](https://bugs.openjdk.org/browse/JDK-8376269). 
But it has been backouted due to build error (see 
[JDK-8377365](https://bugs.openjdk.org/browse/JDK-8377365) for details).

JDK-8376269 uses `memfd_create` to copy vDSO from coredump to temporal memory, 
however it cannot be used on older glibc - some CI works on glibc 2.12, it does 
not have `memfd_create` unfortunately.

Thus this PR proposes to use `tmpfile()` and `fileno()` to copy vDSO, as 
alternatives of `memfd_create()`. It works, and passed all serviceability/sa 
tests on Linux AMD64.

Changes from JDK-8376269 is 
https://github.com/openjdk/jdk/commit/0c315303865efe60de54276bbcf2faf174fd1d9b .

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

Commit messages:
 - Overwrite entire segment if the library is vDSO
 - Use tmpfile() and fileno() to copy vDSO
 - 8376269: Mixed jstack cannot find function in vDSO

Changes: https://git.openjdk.org/jdk/pull/29610/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29610&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377368
  Stats: 242 lines in 5 files changed: 230 ins; 0 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/29610.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29610/head:pull/29610

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

Reply via email to