Запуск leveldb с JNI приводит к сбою Java 11 с 0xC00000F1
Я получил проблему, связанную с Java 11 и сбоем моего программного обеспечения ( https://github.com/GoMint/GoMint/issues/390). В результате расследования я обнаружил, что моя JNI-привязка leveldb вызывает этот сбой:
Код этой библиотеки: https://github.com/Mojang/leveldb-mcpe/blob/master/util/env_win.cc#L603
static INIT_ONCE g_InitOnce = INIT_ONCE_STATIC_INIT;
static Env* default_env;
static BOOL CALLBACK InitDefaultEnv(PINIT_ONCE InitOnce,
PVOID Parameter,
PVOID *lpContext) {
::memset(global_read_only_buf, 0, sizeof(global_read_only_buf));
default_env = new WinEnv;
return TRUE;
}
Env* Env::Default() {
PVOID lpContext;
InitOnceExecuteOnce(&g_InitOnce, // One-time initialization structure
InitDefaultEnv, // Pointer to initialization callback function
NULL, // Optional parameter to callback function (not used)
&lpContext); // Receives pointer to event object stored in g_InitOnce
return default_env;
}
Из-за кода ошибки MS Docs говорит, что в позиции 3 указан недопустимый параметр, который будет равен NULL.
Что меня интересует, так это то, что этот код работает с Java 8 и до сих пор не менялся.
При необходимости этот Jenkins предоставляет сборки аварийного программного обеспечения: http://ci.gomint.io/job/GoMint/job/master/