Pregunta

Al ejecutar uno de nuestros programas, un probador se enfrentó con el cuadro de diálogo de prevención de ejecución de datos de Windows.

Intentamos reproducir esta situación en un equipo desarrollador para fines de depuración: sin éxito.

¿Alguien sabe cómo encontrar qué puede causar que la protección DEP elimine la aplicación? ¿Hay alguna herramienta disponible para esto?

¿Fue útil?

Solución

El cuadro de diálogo DEP normalmente solo se mostrará cuando intentes ejecutar código de una región que no estás marcando como ejecutable. Esto podría ser causado por 'thunks' en una biblioteca que está utilizando, p. Ventanas ATL. Este problema se solucionó en ATL 8.0.

Un error de eliminación de pila, por ejemplo, una saturación del búfer, también puede causar este problema, al establecer la dirección de retorno en una ubicación que no sea ejecutable. Esto podría no causar una infracción de acceso sino un comportamiento extraño, si DEP está desactivado para el proceso o no está disponible en el hardware.

También puede suceder si lanza una excepción de C ++ o levanta una excepción de SEH, y sus controladores de excepción estructurados han sido eliminados por un exceso de búfer.

Otros consejos

Potencialmente, creo que cada vez que intente escribir en la memoria que no está asignada, este sería un posible resultado. Podría ser cualquier cosa en el sentido de eliminar un objeto y luego usarlo, o escribir una cadena en un búfer que es demasiado pequeño para contenerlo.

DEP está influenciado por la presencia de capacidad de hardware. Recientemente tuvimos una situación en la que nuestra aplicación funcionaba bien en máquinas antiguas, pero fallaría en otras nuevas. Resultó que, aunque DEP estaba habilitado tanto en los servidores antiguos como en los nuevos, caímos en los nuevos porque la detección de hardware era mejor, más agresiva o algo así. Entonces, si su control de calidad puede reproducirse pero el DEV no puede, entonces inténtelo con un hardware idéntico ... Aunque parece irrazonable que el control de calidad tenga una PC más nueva / mejor que la de ... ¡Lo creo totalmente!
Aquí están mis notas sobre nuestra experiencia reciente con esto: ¿Incompatibilidades entre Indy 9 y Windows Server 2003?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top