Application failure with traversal

Lennart Börjeson lennart.borjeson at cinnober.com
Fri Feb 9 20:18:59 UTC 2018


Thank you both, too! ...then I just take the dog for her walk...

Best regards,

/Lennart

> 9 feb. 2018 kl. 21:16 skrev Roman Kennke <rkennke at redhat.com>:
> 
> Ok,I see. This needs a little more work then. I think for now we have
> enough information to proceed. There are two things that need to be
> done:
> 
> - Get traversal to work without barriers on constants. This will most
> likely fix your original NPE, and also provide a nice performance
> boost.
> - Get it to work *with* barriers on constants too. This will probably
> be needed for concurrent code cache scanning, which will enhance pause
> times. (Code cache scanning is currently our worst offender during the
> pauses.)
> 
> Thank you for testing and testing and testing again, and all your
> patience! We will get back to you once we know more.
> 
> Cheers, Roman
> 
> 
> On Fri, Feb 9, 2018 at 9:11 PM, Lennart Börjeson
> <lennart.borjeson at cinnober.com> wrote:
>> 
>>> 9 feb. 2018 kl. 20:24 skrev Roman Kennke <rkennke at redhat.com>:
>>> 
>>> diff --git a/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>>> b/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>>> --- a/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>>> +++ b/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>>> @@ -1308,7 +1308,6 @@
>>>    FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
>>>    FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier,       false);
>>>    FLAG_SET_DEFAULT(ShenandoahAsmWB,                  true);
>>> -    FLAG_SET_DEFAULT(ShenandoahBarriersForConst,       true);
>>>    FLAG_SET_DEFAULT(ShenandoahWriteBarrierRB,         false);
>>>    FLAG_SET_DEFAULT(ShenandoahAllocImplicitLive,      false);
>>>  }
>> 
>> I can't seem to get that patch to apply?
>> 
>> patching file src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>> Hunk #1 FAILED at 1308.
>> 1 out of 1 hunk FAILED -- saving rejects to file src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp.rej
>> 
>> 
>> Anyway, I just commented out that line manually:
>> 
>> diff -r 16f17f40cecf src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp
>> --- a/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp     Thu Feb 08 13:24:03 2018 +0100
>> +++ b/src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp     Fri Feb 09 20:50:36 2018 +0100
>> @@ -1308,7 +1308,7 @@
>>     FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
>>     FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier,       false);
>>     FLAG_SET_DEFAULT(ShenandoahAsmWB,                  true);
>> -    FLAG_SET_DEFAULT(ShenandoahBarriersForConst,       true);
>> +    //    FLAG_SET_DEFAULT(ShenandoahBarriersForConst,       true);
>>     FLAG_SET_DEFAULT(ShenandoahWriteBarrierRB,         false);
>>     FLAG_SET_DEFAULT(ShenandoahAllocImplicitLive,      false);
>>   }
>> 
>> 
>> Anyway, with this change I don't get an NPE, but the application JVM crashes with this:
>> 
>> 
>> # A fatal error has been detected by the Java Runtime Environment:
>> #
>> #  Internal Error (/home/lennartb/shenandoah-jdk10/src/hotspot/share/opto/split_if.cpp:173), pid=39409, tid=39425
>> #  assert(u_ctrl != blk1 && u_ctrl != blk2) failed: won't converge
>> #
>> # JRE version: OpenJDK Runtime Environment (10.0) (fastdebug build 10-internal+0-adhoc.lennartb.shenandoah-jdk10)
>> # Java VM: OpenJDK 64-Bit Server VM (fastdebug 10-internal+0-adhoc.lennartb.shenandoah-jdk10, mixed mode, tiered, compressed oops, Shenandoah gc, linux-amd64)
>> # Core dump will be written. Default location: /home/tetest/TE/system/cd1/core.39409
>> #
>> # If you would like to submit a bug report, please visit:
>> #   http://bugreport.java.com/bugreport/crash.jsp
>> #
>> 
>> ---------------  S U M M A R Y ------------
>> 
>> Command Line: -Xms2400M -Xmx4800M -XX:+PrintFlagsFinal -Xlog:gc*=info,safepoint*=info,vmoperation*=trace:stdout:uptime,uptimenanos,timenanos,level,tags -XX:+UnlockExperimentalVMOptions -XX:SyncKnobs=Verbose=1 -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+SafepointTimeout -XX:SafepointTimeoutDelay=1 --add-modules=java.xml.bind --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED -XX:+UseShenandoahGC -XX:ConcGCThreads=8 -XX:ParallelGCThreads=4 -XX:MonitorBound=20000 -XX:-UseBiasedLocking -XX:+DoEscapeAnalysis -XX:+UseNUMA -XX:+UnlockExperimentalVMOptions -XX:ShenandoahGCHeuristics=traversal -DRoundRobinPrio=0 -DHibernate3=true -DdumpConfig=VALUE -Djava.net.preferIPv4Stack=true -Djava.util.prefs.systemRoot=/home/tetest com.cinnober.framework.server.impl.FwStart --stdouttolog --stderrtolog -s CD1 -r http://frank-10g.cinnober.com:22780 -i TE -v com.cinnober.common.version.TeVersion
>> 
>> Host: frank.cinnober.com, Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz, 48 cores, 503G, CentOS Linux release 7.3.1611 (Core)
>> Time: Fri Feb  9 21:08:28 2018 CET elapsed time: 41 seconds (0d 0h 0m 41s)
>> 
>> ---------------  T H R E A D  ---------------
>> 
>> Current thread (0x00007f7d6039e4a0):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=39425, stack(0x00007f7d114f6000,0x00007f7d115f7000)]
>> 
>> 
>> Current CompileTask:
>> C2:  41043 9019       4       com.mysql.jdbc.StringUtils::getInt (283 bytes)
>> 
>> Stack: [0x00007f7d114f6000,0x00007f7d115f7000],  sp=0x00007f7d115f02b0,  free space=1000k
>> Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
>> V  [libjvm.so+0x18af9ef]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x15f
>> V  [libjvm.so+0x18b082a]  VMError::report_and_die(Thread*, char const*, int, char const*, char const*, __va_list_tag*)+0x4a
>> V  [libjvm.so+0xb15bca]  report_vm_error(char const*, int, char const*, char const*, ...)+0xea
>> V  [libjvm.so+0x17373ee]  PhaseIdealLoop::split_up(Node*, Node*, Node*) [clone .part.131]+0xe2e
>> V  [libjvm.so+0x1739c01]  PhaseIdealLoop::do_split_if(Node*)+0x8d1
>> V  [libjvm.so+0x114dcfb]  PhaseIdealLoop::split_if_with_blocks_post(Node*)+0xf8b
>> V  [libjvm.so+0x114ddab]  PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)+0xab
>> V  [libjvm.so+0x11445f4]  PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x1494
>> V  [libjvm.so+0xa79f20]  Compile::optimize_loops(int&, PhaseIterGVN&, LoopOptsMode)+0x100
>> V  [libjvm.so+0xa82aa2]  Compile::Optimize()+0xe42
>> V  [libjvm.so+0xa84350]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x1460
>> V  [libjvm.so+0x8c41c3]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x123
>> V  [libjvm.so+0xa9142d]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x35d
>> V  [libjvm.so+0xa924d8]  CompileBroker::compiler_thread_loop()+0x3b8
>> :
>> 
>> 



More information about the shenandoah-dev mailing list