Estoy moviendo un proyecto al nuevo kit de desarrollo nativo de Android (es decir, JNI) y me gustaría detectar SIGSEGV, en caso de que ocurra (posiblemente también SIGILL, SIGABRT, SIGFPE) para presentar un cuadro de diálogo de informe de fallas agradable, en lugar de (o antes) de lo que sucede actualmente: la muerte inmediata y sin ceremonias del proceso y posiblemente algún intento del sistema operativo para reiniciarlo. ( Editar: JVM / Dalvik VM capta la señal y registra un seguimiento de pila y otra información útil; solo quiero ofrecer al usuario la opción de enviarme esa información por correo electrónico realmente).
La situación es: un gran cuerpo de código C que no escribí hace la mayor parte del trabajo en esta aplicación (toda la lógica del juego) y, aunque está bien probado en muchas otras plataformas, es muy posible que yo, en mi Android port, lo alimentará con basura y provocará un bloqueo en el código nativo, por lo que quiero los volcados de emergencia (tanto nativos como Java) que aparecen actualmente en el registro de Android (supongo que sería stderr en una situación que no sea de Android). Soy libre de modificar tanto el código C como el código Java arbitrariamente, aunque las devoluciones de llamada (tanto que entran como que salen de JNI) suman alrededor de 40 y obviamente, puntos de bonificación para diferencias pequeñas.
He oído hablar de la biblioteca de encadenamiento de señales en J2SE, libjsig.so, y si pudiera instalar de manera segura un controlador de señales como ese en Android, eso resolvería la parte de captura de mi pregunta, pero no veo tal biblioteca para Android / Dalvik .