Tengo una aplicación Java 1.6 que accede a un módulo nativo de un tercero, a través de una clase JNI proporcionada como interfaz. Recientemente notamos que se está produciendo un SEGFAULT en el módulo nativo y está causando que nuestra aplicación falle. ¿Es posible atrapar y manejar este evento, al menos para iniciar sesión correctamente antes de morir?¿Es posible manejar un SEGFAULT orginating en código nativo?
He intentado tanto técnicas de Java en el artículo de kjp's answer. Ninguno funcionó. El intento de instalar un signal handler en los resultados 'SEGV' en la excepción
señal ya utilizada por VM: SEGV
El shutdown handler he instalado simplemente no disparó, presumiblemente debido a lo que los IBM article estados:
ganchos de cierre no se llevará a cabo si el método
Runtime.halt() es llamado para terminar la JVM. Runtime.halt() se proporciona para permitir un cierre rápido de la JVM.
La opción -Xrs JVM está especificada.
La JVM sale anormalmente, como una condición de excepción o un aborto forzado generado por el software JVM.
¿Hay símbolos de depuración públicos disponibles para el código nativo? Si puede encontrar más información sobre por qué está sucediendo, es posible que pueda enviar un informe de errores lo suficientemente completo para que solucione su biblioteca. – Benj
@Benj Trabajando en eso en paralelo. Obtendrán más información de la que desean. Esperaba tener un plan de respaldo. –
¿En qué sistema operativo se está ejecutando? – Benj