1. ホーム

Java Runtime Environmentのプログラムエラー処理方式で致命的なエラーが検出されました。

2022-02-23 09:31:56
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x70e72b89, pid=8020, tid=7880
#
# JRE version: Java(TM) SE Runtime Environment (7.0_79-b15) (build 1.7.0_79-b15)
# Java VM: Java HotSpot(TM) Client VM (24.79-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# V [jvm.dll+0xc2b89]
# Failed to write core dump.
# Failed to write core dump. minidumps are not enabled by default on client versions of Windows
# Minidumps are not enabled by default on client versions of Windows.
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#

一般的にこのタイプのエラーは、自己コード化された関数のエラーによって引き起こされるシステムエラーです。JAVAプラットフォームとは関係ありません。エラーログファイルに基づいて、エラーの正確な原因を確認することができます。

次のコードスニペットは、あるエラーに対して生成されたログファイルです。

Stack: [0x005c0000,0x00610000], sp=0x0060ef80, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xc2b89]
C [split_sentence_jni.dll+0x15c1]
j edu.hit.ir.ltp4j.SplitSentence.splitSentence(Ljava/lang/String;Ljava/util/List;)V+0
j com.Controller.NLP.preprocessor.NLPfun.splitSentence(Ljava/lang/String;)Ljava/util/List;+10
j com.Controller.NLP.preprocessor.test_NLPProcessor.NLP()V+61
v ~StubRoutines::call_stub
V [jvm.dll+0x14234a]
V [jvm.dll+0x206ebe]
V [jvm.dll+0x1423cd]
V [jvm.dll+0x14e6be]
V [jvm.dll+0x14e8e5]
V [jvm.dll+0xf2ec9]
C [java.dll+0x7d8b]

このファイルによると、このエラーはダイナミックライブラリsplit_sentence_jni.dllを使用することで発生することが明確にわかりますが、このエラーはダイナミックライブラリsplit_sentence_jni.dllの問題ではなく、関連する関数の使用上のエラー、例えば次のようなエラーによって発生します。

List<String> sents = NLPfun.splitSentence(content);

上記の関数を使用すると、contentにnullが代入され、プログラムがエラーで実行されるのです!

同様に、以下のエラーは、構文解析関数が長すぎる文の入力を受け付け、構文解析エラーとなったもので、parser.dll 自体のバグです。このエラーを回避するためには、パーサ処理関数の入力文が200より小さい方がよいでしょう。

Stack: [0x00940000,0x00990000], sp=0x0098efb0, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [KERNELBASE.dll+0xb727]
C [msvcr100.dll+0x2872d]
C [msvcr100.dll+0x3f30f]
C [parser.dll+0xffa0]
C [parser.dll+0x10ec5]
C [parser.dll+0x4555]
C [parser.dll+0x4704]
C [parser_jni.dll+0x1d90]
j edu.hit.ir.ltp4j.Parser.parse(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)I+0