我相信我在JNI實現上遇到了IBM JDK上的一個bug。爲什麼NewGlobalRef將核心轉儲到IBM JDK上的JNI上?
我工作的Apache ActiveMQ的阿蒂米斯與我們最近不得不作出this following fix時,我們在對IBM JDK 1.8的問題:一個放在methodID,
https://github.com/apache/activemq-artemis/commit/18e41963b61a5ef6dbcdb150e27c07c062deaa66
的問題是圍繞收購NewGlobalRef這大概也是一個對象。如果通過Sun JDK獲得NewGlobalRef(MethodID),一切都很好,但是如果您在IBM JDK上執行此操作,那麼您將獲得GPF。
我可以通過刪除NewGlobalRef來修復Artemis Native層(因爲我相信我最終不需要),但仍然因爲這個原因,JVM不應該核心轉儲。
我已經把一個項目複製問題: https://github.com/clebertsuconic/simple-JNI-bug
如果還原最後一次提交,或評論圍繞NewGlobalRef代碼的方法ID一切都會過去。
謝謝......如果您通過-Xcheck:jni,Oracle JDK也會失敗。我不知道這個選項。將使它成爲我的絕對參數的一部分,所以我的單元測試將捕獲任何未來的問題。 謝謝 –