1. ホーム
  2. java

GDALを使用すると、Java Runtime Environmentのプログラムエラー処理方式で致命的なエラーが検出されました。

2022-02-23 10:52:01
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000005c4b2930, pid=11432, tid=0x0000000000004684
#
# JRE version: Java(TM) SE Runtime Environment (8.0_144-b01) (build 1.8.0_144-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.144-b01 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [gdal202.dll+0xbb2930]
# 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.
# An error report file with more information is saved as:
# C:\workplace\workspace-ODN\pdnms-project\hs_err_pid11432.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#See problematic frame for where to report the bug.


[error occurred during error reporting , id 0xc0000005]

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

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

Stack: [0x000000007a890000,0x000000007a990000], sp=0x000000007a98ec38, free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [gdal202.dll+0xbb2930]


Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 41252 org.gdal.gdal.gdalJNI.delete_Dataset(J)V (0 bytes) @ 0x0000000008261641 [0x0000000008261600+0x41]
J 41251 C1 org.gdal.gdal.Dataset.delete()V (38 bytes) @ 0x0000000008261b54 [0x0000000008261980+0x1d4]
j autocad.tiff.TiffDomain.combineTiles([DLautocad/tiff/TilesBound;Ljava/lang/String;Ljava/lang/String;Lpubsub/dto/PubSubDto;)V+389
j autocad.tiff.TiffDomain.export(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IL/pubsub/dto/PubSubDto;)V+216
j autocad.service.AutocadServiceImpl$1.run()V+181
v ~StubRoutines::call_stub


--------------- P R O C E S S ---------------


このファイルから、エラーがダイナミックライブラリの使用によるものであることが明確にわかります gdal202.dll しかし、このエラーはダイナミック・ライブラリ gdal202.dll が故障しているのではなく、以下のように該当する関数を使用する際にエラーが発生します。

final Driver driver = gdal.GetDriverByName("GTiff");
final Vector meta = driver.GetMetadata_List(); final Dataset dest = driver.Create(outPutFileName, imageWidth, imageHeight, 3, gdalconst.GDT_ Byte, meta);
dest.SetGeoTransform(geoTransform);

...

dest.FlushCache();
dest.delete();//report the location of the error
driver.delete();


原因 以下、this.swigCPtr=0 バイトで、プログラムがエラーで実行されます!