У меня есть Java-приложение, которое вызывает множество различных нативных методов унаследованного приложения через JNI.Но JVM аварийно завершает работу с дампом стека в случайных местах вне любого вызова JNI.Иногда происходит сбой во время GC, иногда во время загрузки класса и других местах.Я подозреваю, что один или несколько собственных методов повреждают кучу JVM или некоторую другую структуру данных.Мне нужно знать, какой это вызов, чтобы я мог исправить нативную реализацию.
Устаревшее приложение - сторонняя DLL, для которой у меня нет ни источников, ни информации о символах.Чтобы сделать его вызываемым из Java, я создал оболочку DLL, которая использует соглашения о вызовах JNI.
Идеальным решением будет расширенный параметр JVM, который заставляет JVM автоматически проверять целостность кучи и других структур данных после каждого JNI.звоните.
Знаете ли вы что-нибудь, что может помочь?
PS Пожалуйста, не говорите мне о создании слоя сокета или канала между JVM и унаследованным приложением, потому что наши требования этого не позволяют.Речь идет об обнаружении ошибок, а не об архитектуре.