[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