Я разрабатываю установочный упаковщик для используемого Java-приложения. rhvoice синтезатор речи, которому не нужны привилегии администратора для Windows (поэтому я не могу использовать версию sapi).
Для ее решения яя использую andoid jni-код с формальными минимальными исправлениями и , все хорошо работает на обеих архитектурах x86 и x86_64 , когда приложение java выполняется с использованием java.exe из файлов jar.
Но, когда я делаю приложение для Windows EXE с помощью javafxpackager или, например, packr (они используют jvm.dll для работы), x86-версия работает хорошо, но x86_64 останавливается с java EXCEPTION_ACCESS_VIOLATION:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff83fa36b2d, pid=110316, tid=0x0000000000019f60
#
# JRE version: OpenJDK Runtime Environment (8.0_201-b09) (build 1.8.0_201-1-ojdkbuild-b09)
# Java VM: OpenJDK 64-Bit Server VM (25.201-b09 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [RHVoice.64.dll+0x6b2d]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
...
Stack: [0x000000dd61600000,0x000000dd61ad0000], sp=0x000000dd61acf030, free space=4924k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [RHVoice.64.dll+0x6b2d]
C 0x000002990001962e
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j com.github.olga_yakovleva.rhvoice.TTSEngine.doGetVoices()[Lcom/github/olga_yakovleva/rhvoice/VoiceInfo;+0
j com.github.olga_yakovleva.rhvoice.TTSEngine.getVoices()Ljava/util/List;+1
j com.github.olga_yakovleva.rhvoice.Test.go()V+17
j com.github.olga_yakovleva.rhvoice.Test.main([Ljava/lang/String;)V+34
v ~StubRoutines::call_stub
Несколько лет назад, в 2014-2015 годах, этот метод работал без ошибок в Windows 7 и 8 на обеих архитектурах, но старая сборка не работает на Windows 10 и была перекомпилирована с использованием Visual Studio 2017.
Как я могу обнаружитьПричина такого исключения ошибки.Как я могу настроить среду отладки, чтобы исследовать это.
Когда я меняю версию java (oracle или неофициальные окна собирает openjdk), компилятор (vs2015 / 2017) или сборку операционной системы среды (win7 или win10), проблемаиногда приходил на упаковщик версии x86, а адрес исключения изменялся внутри библиотеки rhvoice или java.