Bad GC map in x64 baseline DynamicLinker lazyMethodInvoker


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).


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


x64 builds (best reproducible with gcstress)



Erik Brangs


Erik Brangs



External issue ID



Fix versions

Affects versions