JVM 崩溃日志文件:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (sharedRuntime.cpp:834), pid=4784, tid=0x00007f50656d6700
# fatal error: exception happened outside interpreter, nmethods and vtable stubs at pc 0x00007f526d06d531
#
# JRE version: Java(TM) SE Runtime Environment (8.0_102-b14) (build 1.8.0_102-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.102-b14 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f4fcc001000): JavaThread "RdbRangeTask-27" [_thread_in_Java, id=5200, stack(0x00007f50655d6000,0x00007f50656d7000)]
Stack: [0x00007f50655d6000,0x00007f50656d7000], sp=0x00007f50656d3d90, free space=1015k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xac52aa] VMError::report_and_die()+0x2ba
V [libjvm.so+0x4fbe59] report_fatal(char const*, int, char const*)+0x59
V [libjvm.so+0x9c0d6a] SharedRuntime::continuation_for_implicit_exception(JavaThread*, unsigned char*, SharedRuntime::ImplicitExceptionKind)+0x33a
V [libjvm.so+0x92905a] JVM_handle_linux_signal+0x48a
V [libjvm.so+0x91f4b3] signalHandler(int, siginfo*, void*)+0x43
C [libpthread.so.0+0xf7e0]
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_294()Z+18
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_169()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_83()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3_30()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_457()Z+43
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_393()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_307()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_216()Z+21
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_105()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_90()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3R_81()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_3_28()Z+1
j com.foundationdb.sql.parser.SQLGrammar.jj_2_28(I)Z+19
j com.foundationdb.sql.parser.SQLGrammar.selectSublist(Lcom/foundationdb/sql/parser/ResultColumnList;)V+222
j com.foundationdb.sql.parser.SQLGrammar.selectColumnList(Lcom/foundationdb/sql/parser/ResultColumnList;)V+2
j com.foundationdb.sql.parser.SQLGrammar.selectList()Lcom/foundationdb/sql/parser/ResultColumnList;+19
j com.foundationdb.sql.parser.SQLGrammar.querySpecification()Lcom/foundationdb/sql/parser/ResultSetNode;+121
j com.foundationdb.sql.parser.SQLGrammar.simpleTable()Lcom/foundationdb/sql/parser/ResultSetNode;+33
j com.foundationdb.sql.parser.SQLGrammar.nonJoinQueryPrimary()Lcom/foundationdb/sql/parser/ResultSetNode;+41
j com.foundationdb.sql.parser.SQLGrammar.nonJoinQueryTerm(Lcom/foundationdb/sql/parser/ResultSetNode;I)Lcom/foundationdb/sql/parser/ResultSetNode;+1
j com.foundationdb.sql.parser.SQLGrammar.queryExpression(Lcom/foundationdb/sql/parser/ResultSetNode;I)Lcom/foundationdb/sql/parser/ResultSetNode;+3
j com.foundationdb.sql.parser.SQLGrammar.preparableSelectStatement()Lcom/foundationdb/sql/parser/CursorNode;+29
j com.foundationdb.sql.parser.SQLGrammar.preparableSQLDataStatement()Lcom/foundationdb/sql/parser/StatementNode;+105
j com.foundationdb.sql.parser.SQLGrammar.StatementPart([Lcom/foundationdb/sql/parser/Token;)Lcom/foundationdb/sql/parser/StatementNode;+237
虚拟机参数是:
-Xms8g -Xmx8g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc
-XX:MaxTenuringThreshold=10 -XX:SurvivorRatio=14 -XX:NewRatio=2
-XX:+UseParallelOldGC -XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime
我在具有 24 核 CPU 和 96GB 内存的物理机上单独运行它。
我对上面的崩溃日志文件有一些疑问:
“com.foundationdb.sql.parser.SQLGrammar.jj_3R_294()Z+18”行中的“Z+18”(特别是“Z”)是什么意思?我发现了一些关于分析崩溃日志文件的博客文章,但没有一篇提到它(显然我错过了一些更详细的博客文章)。
这次崩溃的根本原因是什么?它是基础数据库代码中的错误,还是 JVM 核心中的错误(因为我搜索了关键字“内部错误(sharedRuntime.cpp:834)”并且有很多关于它的问题)。
谢谢!