-
Bug
-
Resolution: Fixed
-
P4
-
18, 21, 22
-
b25
The (x64) Java stack walking code uses RBP as a stack pointer; the register points to the location of previous RBP, and the next slot on stack is supposed to contain the return address at all times.
The stub mentioned in the summary changes RBP in the middle of the method [1]. This breaks stack walking, resulting in odd flamegraphs generated by asyncprofiler.
Sample flamegraphs (current and fixed) attached. They were produced with:
make test TEST=micro:full.CipherBench.GCM.enc MICRO_OPTIONS='-prof async:libPath=/path/to/libasyncProfiler.so\\\;output=flamegraph'
[1] https://github.com/openjdk/jdk/blob/17409500369bd8503782b2e6f4e885e33837087a/src/hotspot/cpu/x86/stubGenerator_x86_64_aes.cpp#L264-L265
The stub mentioned in the summary changes RBP in the middle of the method [1]. This breaks stack walking, resulting in odd flamegraphs generated by asyncprofiler.
Sample flamegraphs (current and fixed) attached. They were produced with:
make test TEST=micro:full.CipherBench.GCM.enc MICRO_OPTIONS='-prof async:libPath=/path/to/libasyncProfiler.so\\\;output=flamegraph'
[1] https://github.com/openjdk/jdk/blob/17409500369bd8503782b2e6f4e885e33837087a/src/hotspot/cpu/x86/stubGenerator_x86_64_aes.cpp#L264-L265
- relates to
-
JDK-8267125 AES Galois CounterMode (GCM) interleaved implementation using AVX512 + VAES instructions
- Resolved