For some time I have been observing random, infrequent null pointer exceptions in javac. These were not repeatable but seemed to happen about once every 10 builds of OpenJDK.
Backing out the the following changeset causes the problem to go away.
changeset: 8135:f056955b0ae8
parent: 8132:2b54cd604683
user: enevill
date: Fri Apr 24 11:01:37 2015 +0000
files: src/cpu/aarch64/vm/aarch64.ad src/cpu/aarch64/vm/frame_aarch64.inline.hpp
description:
8075930: AARCH64: Use FP Register in C2
Summary: modify to allow C2 to allocate FP (R29) as a general register
Reviewed-by: aph, kvn, dlong
In the C2 generated code before the point of the exception I observe
0x000003ff71023b6c: bl 0x000003ff700b23c0 ; OopMap{rfp=NarrowOop [0]=Oop [8]=Oop [16]=Oop [24]=Oop [32]=Oop off=432}
;*invokevirtual accept
It appears that the fp register is not bring preserved correctly. Possibly this only occurs during deoptimisation which would explain why the failure is infrequent.
I have also observed the fp register being corrupted when it contains an integer value.
Backing out the the following changeset causes the problem to go away.
changeset: 8135:f056955b0ae8
parent: 8132:2b54cd604683
user: enevill
date: Fri Apr 24 11:01:37 2015 +0000
files: src/cpu/aarch64/vm/aarch64.ad src/cpu/aarch64/vm/frame_aarch64.inline.hpp
description:
8075930: AARCH64: Use FP Register in C2
Summary: modify to allow C2 to allocate FP (R29) as a general register
Reviewed-by: aph, kvn, dlong
In the C2 generated code before the point of the exception I observe
0x000003ff71023b6c: bl 0x000003ff700b23c0 ; OopMap{rfp=NarrowOop [0]=Oop [8]=Oop [16]=Oop [24]=Oop [32]=Oop off=432}
;*invokevirtual accept
It appears that the fp register is not bring preserved correctly. Possibly this only occurs during deoptimisation which would explain why the failure is infrequent.
I have also observed the fp register being corrupted when it contains an integer value.
- relates to
-
JDK-8179701 AArch64: Reinstate FP as an allocatable register
-
- Resolved
-