¿Cómo soluciono una aplicación de Windows .NET que se bloquea al inicio con el código de excepción: 0xE0434352?

81

Construí una aplicación .NET Windows Forms en Visual Studio 2010. También construí un paquete de instalación / instalación correspondiente a través de Visual Studio 2010. Esto está construido como una aplicación de 32 bits (x86). (Hacemos uso de controles de Windows Forms de terceros que son solo de 32 bits).

Puedo ejecutar el paquete de instalación e implementarlo correctamente en otros entornos de Windows 7 de 64 bits y cajas de Windows XP de 32 bits. La aplicación instalada funciona bien en estos.

Sin embargo, cuando intento ejecutar Windows Server 2008 R2 - 64 bit, la aplicación se bloquea al inicio. Se instaló correctamente a través del instalador sin ningún error.

Parece fallar al cargar la aplicación. Puse un cuadro de mensaje como primera línea en la aplicación para ver si pasó de la carga. El cuadro de mensaje no aparece, así que supongo que ocurre durante la carga / inicio de la aplicación.

Hasta ahora no he encontrado mucho para continuar. De los Detalles veo lo siguiente:

Exception Code: E0434352

Busqué / busqué en Google para ver si había algo obvio, pero no vi nada. Vi algunas referencias a un posible desbordamiento de pila en CLR .

La aplicación Windows Forms está construida con las siguientes referencias:

  • DevExpress
  • Controles Infragistics Winforms
  • DLL de DataAccess de ORACLE
  • RabbitMQ

¿Cual es el problema? ¿Cómo me acerco a resolver esto? ¿Cómo depuro para obtener más información útil?

JohnB
fuente
¿Cuál de esas referencias usa código no administrado? Ejecute WinDbg, cargue su aplicación y vea si se muestra alguna información sobre el error.
keyboardP
Además, posiblemente relacionado si resulta ser el módulo ORACLE: stackoverflow.com/questions/2100955/…
keyboardP
3
¿Un messageBox? ¿Grave? Eche un vistazo a System.Diagnostics.Debug.
Henk Holterman
Debugger.Launch () le pedirá que adjunte su proceso al depurador de Visual Studio cuando ejecute esa línea, así que adhiérase a su punto de entrada para adjuntar procesos al inicio.
Amistoso
1
Ha pasado algún tiempo, pero ... ¿Conseguiste solucionar el problema? Tengo un cliente que informa sobre este comportamiento. Es difícil de reproducir aquí en una máquina de desarrollo. Por favor, siéntase libre y comparta su solución. Creo que vale la pena votar a favor. ¡Gracias!
deafjeff

Respuestas:

71

0xE0434352 es el código de excepción para todas las excepciones de .NET, por lo que no le dirá mucho. ¿Cómo obtuviste este código de excepción? ¿El registro de eventos?

Su mejor opción es utilizar un depurador para obtener más información. Si el depurador de Visual Studio no le ayuda, es posible que deba consultar WinDbg con SOS . Vea aquí y aquí para una introducción. Deje que se rompa en la excepción y vea si puede obtener más información sobre el por qué.

Si sospecha que es un problema al cargar ensamblajes, es posible que desee consultar el Registro de Fusion .

Lars Truijens
fuente
4
antes de probar los depuradores, verifique la respuesta de
Tergiver
79

Si recibe ese error del Visor de eventos, debería ver otro evento de error (al menos uno) de la fuente ".NET Runtime". Mire ese mensaje de error, ya que contendrá la Exceptioninformación.

Tergiver
fuente
5
Eso realmente me ayudó, gracias, por lo que descubrí que me faltaba una de las dependencias (excepción FileNotFound)
Pavel K
4

No estoy seguro de si esto ayudará a alguien o no, pero como era mi problema, creo que vale la pena mencionarlo:

Recibí este error y resultó ser un problema con la plataforma para la que se creó el EXE. Lo teníamos compilado para x86, y tenía que ser x64, debido a una referencia de Oracle en el proyecto. Cuando hicimos ese cambio, el problema desapareció. Entonces, vea si tiene algún conflicto similar.

Juan
fuente
4

Parece que este error 0xe0434352 se aplica a varios errores diferentes.

En caso de que ayude a alguien, encontré este error cuando intentaba instalar mi aplicación en una nueva instalación de Windows 10. Funcionó en otras máquinas y parecía que la aplicación comenzaría momentáneamente antes de morir. Después de muchas pruebas y errores, el problema resultó ser que la aplicación requería DirectX9. Aunque estaba presente una versión posterior de DirectX, tenía que tener la versión 9. Espero que eso le ahorre a alguien algo de frustración.

Mike Kelly
fuente
Este es un caso muy peculiar. No estoy seguro de cuántos enfrentarán esta circunstancia particular.
Eniola
3

Estuve luchando con esto todo el día pidiendo a mis usuarios que ejecutaran versiones de depuración del software. Porque parecía que no corría la primera línea. Solo un choque sin información.

Luego me di cuenta de que el error estaba dentro del InitializeComponent del formulario.

La forma de obtener una excepción era eliminar esta línea (o comentarla):

System.Diagnostics.DebuggerStepThrough()

Una vez que se deshaga de la línea, obtendrá una excepción normal.

Gabriel Fernandez
fuente
2

Recibí esto cuando se implementó la aplicación. En mi caso, elegí "Esta es una aplicación de plena confianza" en la pestaña de seguridad del proyecto, y eso lo solucionó.

Joel
fuente
3
Probablemente esa no sea la solución real: es posible que desee configurar su aplicación / sus demandas de seguridad para que se ejecute correctamente en un entorno de confianza media. Pero ese es un punto de partida útil, ¡gracias!
Rup
1

Problema:

El código de la aplicación .Net se aborta antes de que comience su ejecución [Aplicación de consola o aplicación de Windows]

Error recibido: cancelado con el código de error "E0434352"

Excepción : excepción desconocida

Escenario 1:

Cuando una aplicación ya está ejecutada, que ha usado algunos de los recursos dependientes y esos recursos todavía están en uso con la aplicación ejecutada, cuando otra aplicación o el mismo exe se activa desde otra fuente, una de las aplicaciones arroja el error.

Escenario 2:

Cuando una aplicación es activada por un programador o trabajos automáticos, puede estar en estado de ejecución en segundo plano, mientras que cuando intentas activar la misma aplicación de nuevo, se puede activar el error.

Solución:

Cree una aplicación, cuándo y dónde la aplicación libere todos sus recursos tan pronto como se complete Elimine todo el proceso en segundo plano una vez que la aplicación esté cerrada Verifique y evite ejecutar la aplicación desde múltiples fuentes como Batch Process, Task Scheduler y herramientas externas al mismo tiempo. Verifique las dependencias de la aplicación y los recursos y limpie el código si es necesario.

BHUVANESH MOHANKUMAR
fuente
En mi caso, la carpeta de la aplicación o los archivos en ella estaban bloqueados / abiertos, porque el sistema no permite cambiarle el nombre (una prueba simple para verificar es la carpeta y las subcarpetas libres o abiertas / bloqueadas). Después de cerrar sesión / iniciar sesión en el servidor nuevamente, libera bloqueos
Kuleris
0

Para solucionar el problema (cuando varias aplicaciones comenzaron a lanzar esta excepción de repente, por ejemplo, CorelDraw X6 es una), desinstalé el tiempo de ejecución de .NET 4.5 e instalé el tiempo de ejecución de .NET 4. Las dos versiones no se pueden instalar una al lado de la otra, pero usan los mismos números de versión en el GAC . Esto causa problemas ya que algunas de las funciones se han depreciado en 4.5.

DLL Hell ha vuelto ...

user857629
fuente
0

Entonces ... me di cuenta en el visor de eventos que este bloqueo correspondía a un error "System.IO.FileNotFoundException".

Así que disparé ProcMon y noté que uno de los dlls del programa no cargaba vcruntime140. Así que simplemente instalé vs15 redist y funcionó.

mirh
fuente
0

Recibimos este error cuando la cadena de conexión a nuestra base de datos era incorrecta. La clave para resolver esto fue ejecutar dotnet blah.dll, que proporcionó un seguimiento de pila que nos mostró que la instancia de servidor SQL especificada no se pudo encontrar. Espero que esto ayude a alguien.

dellyjm
fuente
0

Sé que este es un hilo algo antiguo, pero también tuve este problema con la aplicación ac # / WPF que estaba creando. La aplicación funcionaba bien en la máquina de desarrollo, pero no se iniciaba en la máquina de prueba. El registro de la aplicación en el visor de eventos dio un error de tiempo de ejecución de .NET algo nebuloso de System.IO.DirectoryNotFoundException.

Intenté usar algún software de depuración, pero la aplicación no se mantuvo funcionando el tiempo suficiente para conectar el depurador al proceso. Después de golpearme la cabeza contra mi escritorio durante un día y mirar muchas páginas web como esta, lo que terminé haciendo para solucionar este problema fue instalar VS2019 en mi máquina de prueba. Luego arrastré el archivo .exe desde su carpeta (estaba en lo profundo de la carpeta Users [usuario] \ AppData \ Apps \ 2.0 ...) a la instancia abierta VS2019 y fui a iniciarlo desde allí. Inmediatamente, apareció un cuadro de diálogo con la excepción y la causa.

En mi caso, cuando agregué un ícono a uno de los formularios, la ruta completa al ícono se colocó en el XAML en lugar de solo el nombre del ícono. Había copiado el archivo de icono en la carpeta del proyecto, pero dado que la carpeta del proyecto no existe en la máquina de prueba, esta fue la causa principal del error. Luego eliminé la ruta del XAML, dejando solo el nombre del ícono uno, reconstruí la solución y la volví a publicar, y ahora funcionó bien en la máquina de prueba. Por supuesto, hay muchas causas además de lo que me dio el error, pero este método de resolución de problemas debería identificar la causa raíz del error, ya que el Visor de eventos de Windows da una respuesta algo vaga.

Para resumir, use Visual Studio en la máquina de prueba como una especie de depurador. Pero, para que funcione correctamente, tuve que arrastrar el archivo .exe al IDE e iniciarlo (ejecutarlo) desde allí. Creo que esto también funcionará con VS2017 y VS2019. Con suerte, esto ayudará a alguien que todavía tiene este problema.

Craig Prusansky
fuente