Запуск leveldb с JNI приводит к сбою Java 11 с 0xC00000F1 - PullRequest
0 голосов
/ 26 октября 2018

Я получил проблему, связанную с Java 11 и сбоем моего программного обеспечения (https://github.com/GoMint/GoMint/issues/390).. В результате расследования я обнаружил, что моя JNI-привязка leveldb вызывает сбой:

enter image description here

Код этой библиотеки такой: 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 говорят, что в позиции 3 указан недопустимый параметр, который будет равен NULL..

Что меня интересует, так это то, что этот код работает с Java 8 и до сих пор не изменялся.

При необходимости этот Jenkins предоставляет сборки программного обеспечения для аварийного завершения: http://ci.gomint.io/job/GoMint/job/master/

...