Bad GC map in x64 baseline DynamicLinker lazyMethodInvoker

Description

The most common failure in the x64 opt porting test run occurs when running luindex with -X:irc:O0 and -X:irc:O1. It manifests as a bad gc map. The failure can be reproduced using x64 gcstress (after patching the boot image size limits).

Jenkins: http://jikesrvm.anu.edu.au/job/x64-opt-porting-main-repo/28/testReport/%28root%29/luindex/luindex__prototype_opt___Opt_0____Tests__dacapo_/

Stack trace:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ===== DaCapo luindex starting ===== adding luindex/william/README validRef: REF outside heap, ref = 0x3ff2d012d0000000 Key: (I)mmortal (N)onmoving (D)iscontiguous (E)xtent (F)raction HEAP_START 0x0000020000000000 AVAILABLE_START 0x000002000dc00000 boot IN 0x0000020000000000->0x000003ffffffffff E 0x0000020000000000 immortal IN 0x0000040000000000->0x000005ffffffffff E 0x0000020000000000 meta N 0x0000060000000000->0x000007ffffffffff E 0x0000020000000000 los N 0x0000080000000000->0x000009ffffffffff E 0x0000020000000000 sanity N 0x00000a0000000000->0x00000bffffffffff E 0x0000020000000000 non-moving N 0x00000c0000000000->0x00000dffffffffff E 0x0000020000000000 sm-code N 0x00000e0000000000->0x00000fffffffffff E 0x0000020000000000 lg-code N 0x0000100000000000->0x000011ffffffffff E 0x0000020000000000 nursery 0x00001e0000000000->0x00001fffffffffff E 0x0000020000000000 immix N 0x0000120000000000->0x000013ffffffffff E 0x0000020000000000 AVAILABLE_END 0x0000200000000000 HEAP_END 0x0000200000000000 Invalid ref reported while scanning stack --- METHOD (BASELINE) Lorg/jikesrvm/runtime/DynamicLinker;.lazyMethodInvoker ()V --- fp = 0x00000800ffde4790 code base = 0x0000020008917248 code offset = 0x0000000000000089 line number = 47 0x00000800ffde4760:REF=0x3ff2d012d0000000 (REF OUTSIDE OF HEAP OR NOT MAPPED) 0x00000800ffde4710 (0x0000000000000000): 0x00000800ffde4790 0x00000800ffde4718 (0x0000000000000008): 0x00000200089172d1 0x00000800ffde4720 (0x0000000000000010): 0x00001201027114a8 0x00000800ffde4728 (0x0000000000000018): 0x00001e0000cc0808 0x00000800ffde4730 (0x0000000000000020): 0x00000c00ffc8f780 0x00000800ffde4738 (0x0000000000000028): 0x00001201027114a8 0x00000800ffde4740 (0x0000000000000030): 0x00001e0000cc0808 0x00000800ffde4748 (0x0000000000000038): 0x41dfffffffe00000 0x00000800ffde4750 (0x0000000000000040): 0x41dfffffffe00000 0x00000800ffde4758 (0x0000000000000048): 0x407a68c1660fd2b2 0x00000800ffde4760 (0x0000000000000050): 0x3ff2d012d0000000 0x00000800ffde4768 (0x0000000000000058): 0x00001201026e8540 0x00000800ffde4770 (0x0000000000000060): 0x00000158347e8280 0x00000800ffde4778 (0x0000000000000068): 0x00001201029e04f8 0x00000800ffde4780 (0x0000000000000070): 0x00000200000b3958 0x00000800ffde4788 (0x0000000000000078): 0x00000000000000aa Dumping stack starting at frame with bad ref: -- Stack -- (0x00000800ffde4790 170) at [0x00000800ffde4790, 0x00000e00ffc7c0ed] Lorg/jikesrvm/runtime/DynamicLinker; lazyMethodInvoker()V at line 47 at bytecode index 11 at machine code offset 0x0000000000000089 (0x00000800ffde4838 23316) at [0x00000800ffde4838, 0x00000e00ffc0a8cb] Lorg/apache/lucene/document/DateTools; timeToString(JLorg/apache/lucene/document/DateTools$Resolution;)Ljava/lang/String; at line 73 at bytecode index 14 at machine code offset 0x00000000000000d5 (0x00000800ffde48d0 23284) at [0x00000800ffde48d0, 0x00000e00ffc796ed] Lorg/apache/lucene/demo/FileDocument; Document(Ljava/io/File;)Lorg/apache/lucene/document/Document; at line 54 at bytecode index 45 at machine code offset 0x00000000000002b3 (0x00000800ffde4978 23281) at [0x00000800ffde4978, 0x00000e00ffc79261] Ldacapo/luindex/LuindexHarness; indexDocs(Lorg/apache/lucene/index/IndexWriter;Ljava/io/File;)V at line 122 at bytecode index 116 at machine code offset 0x00000000000006d5 (0x00000800ffde4a30 23281) at [0x00000800ffde4a30, 0x00000e00ffc125ed] Ldacapo/luindex/LuindexHarness; indexDocs(Lorg/apache/lucene/index/IndexWriter;Ljava/io/File;)V at line 116 at bytecode index 70 at machine code offset 0x0000000000000249 (0x00000800ffde4af0 23191) at [0x00000800ffde4af0, 0x00000e00ffc3ecf3] Ldacapo/luindex/LuindexHarness; iterate(Ljava/lang/String;)V at line 82 at bytecode index 194 at machine code offset 0x00000000000015d5 (0x00000800ffde4b68 23183) at [0x00000800ffde4b68, 0x00000e00ffc1045e] Ldacapo/Benchmark; run(Ldacapo/Callback;Ljava/lang/String;Z)Z at line 126 at bytecode index 50 at machine code offset 0x00000000000000db (0x00000800ffde4c60 23159) at [0x00000800ffde4c60, 0x00001000ffc010a9] Ldacapo/TestHarness; runBenchmark(Ljava/io/File;Ljava/lang/String;Ldacapo/TestHarness;)V at line 302 at bytecode index 356 at machine code offset 0x0000000000000c46 (0x00000800ffde4d20 23073) at [0x00000800ffde4d20, 0x00000e00ffc3f08c] Ldacapo/TestHarness; main([Ljava/lang/String;)V at line 242 at bytecode index 956 at machine code offset 0x0000000000001081 (0x00000800ffde4d58 23032) at [0x00000800ffde4d58, 0x0000020008672ceb] LHarness; main([Ljava/lang/String;)V at line 5 at bytecode index 1 at machine code offset 0x0000000000000074 (0x00000800ffde4d88 -1) at [0x00000800ffde4d88, 0x00000200086de110] <invisible method> (0x00000800ffde4e70 6531) at [0x00000800ffde4e70, 0x00000200086de883] Lorg/jikesrvm/runtime/Reflection; outOfLineInvoke(Lorg/jikesrvm/classloader/RVMMethod;Ljava/lang/Object;[Ljava/lang/Object;Z)Ljava/lang/Object; at line 222 at bytecode index 433 at machine code offset 0x00000000000008d0 (0x00000800ffde4ee0 6530) at [0x00000800ffde4ee0, 0x000002000830284f] Lorg/jikesrvm/runtime/Reflection; invoke(Lorg/jikesrvm/classloader/RVMMethod;Lorg/jikesrvm/runtime/ReflectionBase;Ljava/lang/Object;[Ljava/lang/Object;Z)Ljava/lang/Object; at line 93 at bytecode index 50 at machine code offset 0x00000000000001cb (0x00000800ffde4f60 13156) at [0x00000800ffde4f60, 0x00000200087a2a9b] Lorg/jikesrvm/scheduler/MainThread; run()V at line 203 at bytecode index 196 at machine code offset 0x000000000000048f (0x00000800ffde4fb0 22741) at [0x00000800ffde4fb0, 0x000002000891452d] Lorg/jikesrvm/scheduler/RVMThread; run()V at line 2730 at bytecode index 43 at machine code offset 0x000000000000014b (0x00000800ffde4ff0 22830) at [0x00000800ffde4ff0, 0x00007f58d383158a] Lorg/jikesrvm/scheduler/RVMThread; startoff()V at line 2789 at bytecode index 78 at machine code offset 0x000000000000018d

Environment

x64 builds (best reproducible with gcstress)

Status

Assignee

Erik Brangs

Reporter

Erik Brangs

Labels

None

External issue ID

None

Components

Fix versions

Affects versions

3.1.5

Priority

High
Configure