Как отлаживать проблемы повреждения кучи JNI?

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

Унаследованное приложение - это сторонняя DLL, для которой у меня нет источников или информации о символах. Чтобы сделать его вызываемым из Java, я создал DLL-оболочку, которая использует соглашения о вызовах JNI.

Идеальным решением была бы расширенная опция JVM, которая заставляет JVM автоматически проверять целостность кучи и других ее структур данных после каждого вызова JNI.

12188] Знаете ли вы что-нибудь, что может помочь?

PS Пожалуйста, не говорите мне, что нужно создавать слой сокета или конвейера между JVM и устаревшим приложением, потому что наши требования это не позволяют. Речь идет об обнаружении ошибок, а не об архитектуре.

5
задан fernacolo 14 March 2011 в 21:57
поделиться