Open pshipton opened 4 years ago
@dmitripivkine @knn-k
I have never seen this failure before.
This crash occur an attempt to copy object !fj9object 0xffff7be73dc8
referenced from remembered object
> !j9object 0xFFFF5C5C7AD0
!J9Object 0x0000FFFF5C5C7AD0 {
struct J9Class* clazz = !j9class 0xFFFF7C2EF000 // java/lang/invoke/MethodType
Object flags = 0x00000030;
Ljava/lang/invoke/MethodTypeForm; form = !fj9object 0x0 (offset = 0) (java/lang/invoke/MethodType)
Ljava/lang/Class; returnType = !fj9object 0xffff5c0005e8 (offset = 8) (java/lang/invoke/MethodType)
[Ljava/lang/Class; arguments = !fj9object 0xffff7be73dc8 (offset = 16) (java/lang/invoke/MethodType)
I argSlots = 0x00000001 (offset = 56) (java/lang/invoke/MethodType)
[I stackDescriptionBits = !fj9object 0xffff7be73e28 (offset = 24) (java/lang/invoke/MethodType)
Ljava/lang/String; methodDescriptor = !fj9object 0xffff7be73f90 (offset = 32) (java/lang/invoke/MethodType)
I hashcode = 0xCC7936A6 (offset = 60) (java/lang/invoke/MethodType)
Ljava/lang/invoke/InvokeExactHandle; invoker = !fj9object 0x0 (offset = 40) (java/lang/invoke/MethodType)
Ljava/lang/invoke/MethodType$DeserializedFieldsHolder; deserializedFields = !fj9object 0x0 (offset = 48) (java/lang/invoke/MethodType)
}
but links to Nursery are stall. Looks like this object has been missed to be scanned/fixed up previous Local GCs
This crash occur at the very beginning of Local GC (Scavenge) but previous GC happen to be Global. Also there was no Concurrent Kickoff event, so Mark Map created at last Global GC still valid even for Nursery. According my analysis at least two slots were modified in !j9object 0xFFFF5C5C7AD0
since Global GC (otherwise it would crash earlier):
arguments = !fj9object 0xffff7be73dc8
stackDescriptionBits = !fj9object 0xffff7be73e28
Both of these pointers are wrong (stall or corrupted) and point mid-object.
Object 0xFFFF5C5C7AD0
has flag 0x30 set (OMR_TENURED_STACK_OBJECT_CURRENTLY_REFERENCED), it means it was java stack referenced directly at the time of last Global GC. Also it means that GC should keep this object in Remembered Set for a period of tome and it does.
@dmitripivkine Thank you for your analysis.
0.21.0 m2 build https://ci.eclipse.org/openj9/job/Test_openjdk11_j9_sanity.openjdk_aarch64_linux_xl_Personal/2 java/lang/annotation/TypeAnnotationReflection.java