Pregunta

Tengo un cliente que me dijo que mi programa (programa de usuario sencilla-tierra, no conductor) se bloquea su sistema con un Pantalla Azul de la Muerte (BSOD). Dice que nunca se ha encontrado que con otro programa y que puede reproducirse fácilmente con la mía.

El BSOD es de tipo CRITICAL_OBJECT_TERMINATION (0x000000F4) con tipo de objeto 0x3 (proceso):. Proceso A o hilo crucial para el funcionamiento del sistema ha salido o sido inesperadamente terminar

Puede un sencillo programa se encargará de un BSOD (incluso en Vista ...) o debe comprobar la instalación de hardware o sistema operativo?

¿Fue útil?

Solución

La forma más fácil de provocar un BSOD con un programa de espacio de usuario es (que yo sepa) a el subsistema de Windows proceso (csrss.exe). Esto no necesita hardware defectuoso ni un error en el kernel o un conductor, que sólo necesita privilegios de administrador 1 .

¿Cuál es su código haciendo exactamente? El mensaje de error ( "proceso A o hilo crucial para el funcionamiento del sistema ha salido o sido inesperadamente terminar.") Sonidos como uno de los procesos del sistema esenciales terminados. Tal vez se está matando a un proceso y sin querer consiguió el proceso equivocado?

Si de alguna manera posible que usted podría tratar de obtener un volcado de memoria de ese cliente. El uso de los Herramientas de depuración para Windows a continuación, puede analizar, además, que volcado como se describe aquí .

1 Windows no le impide hacerlo porque " mantiene administradores en el control de su ordenador ". Así que esto es por diseño y no un error. artículos y que de lectura Raymond verán por qué.

Otros consejos

El hecho de que su programa no es un conductor no quiere decir que no va a uso un conductor.

En teoría, el código debe no ser capaz de BSOD la computadora. Es hasta el sistema operativo para asegurarse de que no ocurra. Por definición, eso significa que hay un problema en alguna parte, ya sea en hardware o en código que no sea su programa. Que no excluyen la existencia de un error en el código, así sin embargo.

Breve respuesta es sí. Respuesta larga depende de lo que es el programa se supone que debe hacer y cómo lo hace?

Normalmente, no debería. Si lo hace, debe ser

  • Un error en el kernel de Windows (posible, pero muy improbable)
  • Un error en un controlador de dispositivo (no necesariamente en un dispositivo que utiliza su programa, esto podría llegar a ser muy complicado)
  • Un fallo en el hardware

Yo apostaría por la opción número dos (controlador de dispositivo), pero sería interesante si pudiera obtener un volcado más detallada.

Bueno, sí se puede - pero por muchas razones diferentes.

Es por eso que la prueba en diferentes máquinas, sistemas operativos, hardware, etc ..

¿Ha establecido algunos requisitos para su programa y es tu usuario seguirlas?

Si no puede duplicar por sí mismo, y su programa no necesita administrador de correr, me gustaría ser un poco acerca suspicous

  • La estabilidad de hardware de ese sistema
  • El virus / malware se estado de ese sistema.

Si usted puede conseguir el acceso físico a la máquina cliente, podría valer la pena realizar una exploración completa del virus con un escáner de hasta al día, y la ejecución de un completo memtest en él.

Yo tenía un sistema una vez que parecía estable, excepto que una certian algunos programas no correr en él (y en ocasiones se bloquee la caja). Memtest mostró mi memoria RAM tenía algunos puntos malos, pero estaban en Sims higer, por lo que sólo consiguió acceder si un programa trató de utilizar una gran cantidad de memoria RAM.

No, y eso es más o menos por definición. Lo peor que se puede decir es que una aplicación fácil de la tierra puede haber "provocado" un error de Windows o un error del conductor. Pero un moderno escritorio del sistema operativo es completamente responsable de su propia integridad; un BSOD es un fracaso de que la integridad. Por lo tanto, el sistema operativo es responsable, y sólo el sistema operativo.

(Ejemplo de un error BSOD que su solicitud por sí sola podría exponer: un escáner de virus implementado como un controlador, que se bloquea al ejecutar un archivo de sector de 0xFFFFFFFF, un sector que en este caso la máquina sólo que contiene un archivo DLL de la aplicación )

tuve problemas cuando salga de mi aplicación sin detener todos los procesos y conexiones BD cuando termina el programa (me he caído toda la IDE). Coloco el "parar y desconectar" código en el "Terminar" de "Form_Closed" evento de mi formulario principal y el wa problema resuelto, no sé que ésta es su situación.

Otro problema puede ser si el usuario está intentando acceder a los mismos recursos que su aplicación está utilizando (bases de datos, hardware, tomas de corriente, etc.). pedirle / ella sobre qué aplicaciones él / ella está utilizando cuando el BSOD ocurre.

virus A no puede ser descartada.

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