-
Bug
-
Resolution: Fixed
-
P3
-
11
-
b22
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8207085 | 12 | Volker Simonis | P3 | Resolved | Fixed | b03 |
JDK-8207435 | 11.0.2 | Volker Simonis | P3 | Resolved | Fixed | b01 |
JDK-8207545 | 11.0.1 | Volker Simonis | P3 | Resolved | Fixed | b02 |
JDK-8233947 | openjdk8u242 | Volker Simonis | P3 | Resolved | Fixed | team |
JDK-8235158 | openjdk8u232 | Volker Simonis | P3 | Resolved | Fixed | master |
MallocSiteTable::initialize() creates a pseudo call stack for hashtable entry allocations which is populated with the addresses of some well-known static methods.
However, taking the address of a function or static method in C/C++ isn't required to return the actual code address where that function lives in memory. On ppc64 (i.e. big-endian, ABI ELFv1) applying the address operator on a function will return the functions "function descriptor" (see http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES) which is a struct of three pointers where the first one points to the actual function address.
In order to get a correct stack trace on ppc64 as well, we therefore have to dereference the function descriptor before we can store the real function address.
This bug is the reason why runtime/ElfDecoder/TestElfDirectRead.java fails on Linux/ppc64.
However, taking the address of a function or static method in C/C++ isn't required to return the actual code address where that function lives in memory. On ppc64 (i.e. big-endian, ABI ELFv1) applying the address operator on a function will return the functions "function descriptor" (see http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES) which is a struct of three pointers where the first one points to the actual function address.
In order to get a correct stack trace on ppc64 as well, we therefore have to dereference the function descriptor before we can store the real function address.
This bug is the reason why runtime/ElfDecoder/TestElfDirectRead.java fails on Linux/ppc64.
- backported by
-
JDK-8207085 MallocSiteTable::initialize() doesn't take function descriptors into account
- Resolved
-
JDK-8207435 MallocSiteTable::initialize() doesn't take function descriptors into account
- Resolved
-
JDK-8207545 MallocSiteTable::initialize() doesn't take function descriptors into account
- Resolved
-
JDK-8233947 MallocSiteTable::initialize() doesn't take function descriptors into account
- Resolved
-
JDK-8235158 MallocSiteTable::initialize() doesn't take function descriptors into account
- Resolved