44 votos

¿Cómo se debe diagnosticar el error SEHException - componente Externo se ha lanzado una excepción

Cada vez que un usuario informa de un error del tipo 'System.En tiempo de ejecución.InteropServices.SEHException - componente Externo se ha lanzado una excepción.' - ¿hay algo que yo, como un programador puede hacer para determinar la causa.

Escenario : Un usuario (mediante un programa de mi compañía escribió) ha informado de este error. Esto puede o no puede haber sido un error. Mencionó que en el último mes , el equipo tiene dos veces "dejó de funcionar'. He aprendido de la experiencia, de no tomar esta descripción también letrado, ya que por lo general significa que alguien relacionadas con el equipo no está funcionando como se esperaba. Ellos no fueron capaces de darme más detalles y yo no podía encontrar errores registrados. Por lo tanto, puede o no puede haber sido este error.

De la pila de seguimiento, el error real en la construcción de una clase que no llamar directamente a cualquier interoperabilidad de código, pero tal vez complicado por el hecho de que el objeto puede ser parte de una lista que está enlazado a datos a un DevExpress de la Cuadrícula.

El error fue 'cazado' por una excepción no controlada rutina que normalmente se encargará de cerrar el programa, pero tiene una opción para ignorar y continuar. Si se optó por ignorar el error, el programa continuó trabajando, pero el error de re-producido cuando esta rutina era la siguiente ejecución. Sin embargo esto no vuelva a ocurrir después de cerrar y reiniciar la aplicación.

El equipo en cuestión no parecen estar estresado, se está ejecutando windows Vista Business, tiene 2 gb de memoria y de acuerdo a TaskManager fue sólo alrededor de la mitad de los que con su aplicación de 200Mb.

No es una pieza de información que puede o puede no ser relevante. Otra sección del mismo programa utiliza un componente de terceros que efectivamente es un dotnet envoltura alrededor de una dll nativa y este componente tiene un problema conocido que muy de vez en cuando, usted consigue un 'Intento de leer o escribir en la memoria protegida. Esto es a menudo una indicación de que otra memoria está dañada'. Los fabricantes de componentes de decir que esto ha sido corregido en la última versión de su componente que estamos usando en casa, pero este ha sido entregado al cliente.

Dado que las consecuencias del error son bajos (no se pierde el trabajo y reiniciar el programa y volver a donde estaban sólo se tarda un minuto en la mayoría) y dar a los clientes dentro de poco será la obtención de una nueva versión (con la actualización de componentes de terceros), yo obviamente se pueden cruzar los dedos y esperar que el error no vuelva a ocurrir.

Pero hay algo más que puedo hacer?

19voto

Reed Copsey Puntos 315315

Sí. Este error es una excepción estructurada que no se asignan a una .RED de error. Es probable que su DataGrid asignación de lanzar una excepción nativa que fue dicho.

Usted puede decirle a excepción de lo que está ocurriendo mirando el ExternalException.ErrorCode de la propiedad. Me gustaría comprobar el seguimiento de la pila, y si está atado a la DevExpress cuadrícula, informe del problema para ellos.

4voto

Safran Ali Puntos 2469

si usted está teniendo un problema, tal como se describe en este post:

asp.net mvc depurador de lanzar SEHException

luego la solución es:

si usted tiene cualquier aplicación de Trusteer (como la simpatía o nada ) simplemente desinstalar y reiniciar el sistema, que va a funcionar bien ... encontré esta solución aquí:

http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+thrown+when+I+run+the+application

4voto

Maurice Gilden Puntos 1363

He tenido un problema similar con un SEHException que se produce cuando mi primer programa utiliza un archivo dll nativa de contenedor. Resultó que el archivo DLL nativa para que el envoltorio era falta. La excepción fue de ninguna manera útil en la solución de este. ¿Qué ayuda en la final fue la ejecución de procmon en el fondo y comprobar si ha habido algún error al cargar todos los archivos Dll necesarios.

3voto

ChrisW Puntos 37322

Los fabricantes de componentes de decir que esto ha sido corregido en la última versión de su componente que estamos usando en casa, pero este ha sido entregado al cliente.

Pregunte al fabricante de componentes de cómo probar si el problema de que el cliente está recibiendo el problema es que ellos dicen que han solucionado en su última versión, sin/antes de implementar su última versión para el cliente.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: