Esta es una pregunta inusual, pero aquí va:¿Por qué mi código no se segfault en Windows 7?
En mi código, accidentalmente hago referencia a NULL en algún lugar. Pero en lugar de que la aplicación falle con segfault, parece detener la ejecución de la función actual y simplemente devolver el control a la IU. Esto hace que la depuración sea difícil porque normalmente me gustaría que me avisen del bloqueo para que pueda adjuntar un depurador.
¿Qué podría estar causando esto?
Específicamente, mi código es un controlador ODBC (es decir, una DLL). Mi aplicación de prueba es ODBC Test (odbct32w.exe) que me permite llamar explícitamente a las funciones de la API ODBC en mi DLL. Cuando invoco una de las funciones que tiene una falla de segmentación conocida, en lugar de bloquear la aplicación, la prueba ODBC simplemente devuelve el control a la interfaz de usuario sin imprimir el resultado de la llamada a la función. Luego puedo volver a llamar a cualquier función en mi controlador.
Sé que técnicamente la aplicación llama al administrador del controlador ODBC que carga y llama las funciones en mi controlador. Pero eso no viene al caso ya que mi segfault (o lo que esté sucediendo) hace que la función del administrador del controlador no vuelva tampoco (como lo demuestra la aplicación que no imprime un resultado).
Uno de mis compañeros de trabajo con una máquina similar experimenta el mismo problema mientras que otro no pero no hemos podido determinar ninguna diferencia específica.
Me encanta el título de esta pregunta ... pero no puedo posiblemente * * nave sin errores !! –
Parece que ha proporcionado todo, excepto el código. Quizás el compilador está optimizando el código que no hace nada. –
Supongo que la excepción se está manejando en alguna parte? – EboMike