[aarch64-port-dev ] RFR: JDK-8169177 Aarch64: SIGSEGV when "-XX:+ZeroTLAB" is specified along with GC options
Andrew Haley
aph at redhat.com
Wed Dec 14 13:19:43 UTC 2016
On 14/12/16 08:01, Kavitha Natarajan wrote:
> Thanks Andrew. Below is the webrev of the patch:
>
> http://people.linaro.org/~kavitha.natarajan/8169177/webrev.01/
>
> Older one with zero_memory() that worked is here:
>
> http://people.linaro.org/~kavitha.natarajan/8169177/webrev.00/
>
> Test case is in : hotspot/test/compiler/stringopts/TestStringObjectInitialization.java
The problem is due to the call of _zero_longs() from block_zero().
block_zero()is a buggy macro: it only works with r10 and r11 as its
arguments and it trashes LR. Macros must not do this.
So, if you're going to call block_zero() from arbitrary code you must
save and restore r10, r11, and lr. block_zero() really should be
rewritten to take any registers as base and cnt and save and restore
any scratch registers it uses. Then it could be safely used as a real
assembler macro.
But we are too late in the JDK 9 cycle for any of this: it is an
enhancement. We will go with the first version of the patch.
Thanks,
Andrew.
More information about the aarch64-port-dev
mailing list