web-dev-qa-db-fra.com

Comment réparer une application Windows .NET qui tombe en panne au démarrage avec le code d'exception: 0xE0434352?

J'ai créé une application .NET Windows Forms dans Visual Studio 2010. J'ai également créé un package d'installation/installation correspondant via Visual Studio 2010. Il s'agit d'une application 32 bits (x86). (Nous utilisons des contrôles Windows Forms tiers qui ne sont que 32 bits).

Je suis en mesure d'exécuter le package d'installation et de le déployer avec succès dans d'autres environnements Windows 7 64 bits et Windows XP 32 bits. L'application installée fonctionne correctement sur ces derniers.

Cependant, lorsque j'essaie d'exécuter Windows Server 2008 R2 - 64 bits, l'application se bloque au démarrage. Il a été installé avec succès via le programme d'installation sans aucune erreur.

Il semble se bloquer lors du chargement de l'application. Je mets une boîte de message en tant que première ligne de l'application pour voir si le chargement a été terminé. La boîte de message ne s'affiche pas, donc je suppose que cela se produit lors du chargement/init de l'application.

Jusqu'à présent, je n'ai pas trouvé grand-chose à faire. Parmi les détails, je vois ce qui suit:

Exception Code: E0434352

J'ai pêché/cherché sur Google pour voir s'il y avait quelque chose d'évident, mais je n'ai rien vu. J'ai vu quelques références à un possible débordement de pile dans le CLR .

L'application Windows Forms est générée avec les références suivantes:

  • DevExpress
  • Contrôles Winforms Infragistics
  • DLL Oracle DataAccess
  • RabbitMQ

Quel est le problème? Comment aborder cette question? Comment déboguer pour obtenir des informations plus utiles?

65
JohnB

0xE0434352 est le code d'exception pour toutes les exceptions .NET donc cela ne vous en dit pas beaucoup. Comment avez-vous obtenu ce code d'exception? Le journal des événements?

Votre meilleur pari est d’utiliser un débogueur pour obtenir plus d’informations. Si le débogueur Visual Studio ne vous aide pas, vous devrez peut-être consulter WinDbg with SOS . Voir ici et ici pour une introduction. Laissez-le casser à l'exception, et voyez si vous pouvez obtenir plus d'informations sur le pourquoi.

Si vous pensez que cela pose un problème lors du chargement des assemblys, vous pouvez consulter le répertoire Fusion Log .

59
Lars Truijens

Si vous obtenez cette erreur de l'observateur d'événements, vous devriez voir un autre événement d'erreur (au moins un) de la source ".NET Runtime". Examinez ce message d'erreur car il contiendra les informations Exception.

53
Tergiver

Une explication concise de 0xE0434352 se trouve dans l'article de blog Pourquoi le code d'exception e0434352 ne cesse-t-il de se produire? ainsi que les instructions pour le débogage via WinDbg et cdb .

6
Igor Dvorkin

Il semble que cette erreur 0xe0434352 s’applique à un certain nombre d’erreurs différentes.

Au cas où cela aiderait quelqu'un, j'ai rencontré cette erreur lorsque j'essayais d'installer mon application sur une nouvelle installation de Windows 10. Cela fonctionnait sur d'autres machines et donnait l'impression que l'application allait commencer momentanément avant de mourir. Après de nombreux essais et erreurs, le problème s'est avéré que l'application nécessitait DirectX9. Bien qu'une version ultérieure de DirectX soit présente, elle devait comporter la version 9. J'espère que cela épargnera à quelqu'un de la frustration.

4
Mike Kelly

Je ne sais pas si cela aidera quelqu'un ou non, mais comme c'était mon problème, je suppose que cela mérite d'être mentionné:

Je recevais cette erreur, et il s'est avéré que c'était un problème avec la plate-forme pour laquelle le fichier EXE a été construit. Nous l'avions construit pour x86, et cela devait être x64, à cause d'une référence Oracle dans le projet. Lorsque nous avons apporté ce changement, le problème a disparu. Alors, voyez si vous avez des conflits similaires.

3
John

Je me suis battu avec cela toute une journée pour demander à mes utilisateurs d’exécuter des versions de débogage du logiciel. Parce qu'il semblait ne pas avoir passé la première ligne. Juste un crash sans information.

Ensuite, j'ai réalisé que l'erreur était à l'intérieur du formulaire InitializeComponent.

Le moyen d'obtenir une exception consistait à supprimer cette ligne (ou à la commenter): 

System.Diagnostics.DebuggerStepThrough()

Une fois que vous vous êtes débarrassé de la ligne, vous obtenez une exception normale.

3
Gabriel Fernandez

Je devenais cela quand l'application s'est déployée. Dans mon cas, j'ai choisi l'option "Ceci est une application de confiance totale" dans l'onglet Sécurité du projet, et cela a été corrigé.

2
Joel

Pour résoudre le problème pour moi (lorsqu'un certain nombre d'applications ont commencé à lancer cette exception soudainement, par exemple, CorelDraw X6 en est une), j'ai désinstallé le runtime .NET 4.5 et installé le runtime .NET 4. Les deux versions ne peuvent pas être installées côte à côte, mais elles utilisent les mêmes numéros de version dans le répertoire GAC . Cela pose des problèmes car certaines fonctions ont été amorties en 4.5.

DLL Hell est revenu ...

0
user857629

Je sais que c'est un sujet un peu ancien, mais j'avais également ce problème avec une application c #/WPF que je créais. L'application fonctionnait correctement sur la machine de développement, mais ne pouvait pas démarrer sur la machine de test. Le journal des applications de l'observateur d'événements a généré une erreur .NET Runtime de System.IO.DirectoryNotFoundException quelque peu nébuleuse.

J'ai essayé d'utiliser un logiciel de débogage, mais l'application ne fonctionnait pas assez longtemps pour attacher le débogueur au processus. Après avoir frappé ma tête contre mon bureau pendant une journée et avoir regardé de nombreuses pages Web comme celle-ci, ce que j'ai finalement fait pour résoudre ce problème était d'installer le VS2019 sur ma machine de test. J'ai ensuite fait glisser le fichier .exe de son dossier (il se trouvait profondément dans le dossier Utilisateurs [utilisateur]\AppData\Apps\2.0 ...) vers l'instance ouverte de VS2019 et suis parti pour le démarrer à partir de cet emplacement. Immédiatement, il est venu avec une boîte de dialogue donnant l'exception et la cause.

Dans mon cas, lorsque j'ai ajouté une icône à l'un des formulaires, le chemin d'accès complet à l'icône a été placé dans le code XAML au lieu du nom de l'icône. J'avais copié le fichier d'icône dans le dossier du projet, mais comme ce dossier n'existait pas sur la machine de test, il s'agissait de la cause première de l'erreur. J'ai ensuite supprimé le chemin d'accès du XAML, ne laissant que le nom de l'icône, reconstruit la solution et le republiant, et tout s'est bien déroulé sur la machine de test. Bien sûr, il y a beaucoup de causes autres que celle qui m'a donné l'erreur, mais cette méthode de dépannage devrait, espérons-le, identifier la cause première de l'erreur, car l'observateur d'événements de Windows donne une réponse quelque peu vague.

Pour résumer, utilisez Visual Studio sur la machine de test en tant que débogueur. Mais, pour que cela fonctionne correctement, je devais faire glisser le fichier .exe dans le IDE et le démarrer à partir de là. Je crois que cela fonctionnera également avec VS2017 ainsi que VS2019. J'espère que cela aidera quelqu'un qui a toujours ce problème.

0
Craig Prusansky

Problème:

Code d'application .Net abandonné avant qu'il ne commence son exécution [application console ou application Windows]

Erreur reçue: Abandonné avec le code d'erreur "E0434352"

Exception : exception inconnue

Scénario 1: 

Quand une application est déjà exécutée, qui ont utilisé certaines des ressources dépendantes et que ces ressources sont toujours en cours d'utilisation avec l'application exécutée, lorsqu'une autre application ou le même exe est déclenché depuis une autre source, l'une des applications lève l'erreur.

Scénario 2: 

Lorsqu'une application est déclenchée par un planificateur ou par des tâches automatiques, il se peut qu'elle soit à l'état d'exécution en arrière-plan. Cependant, lorsque vous essayez de réactiver la même application, l'erreur peut être déclenchée.

Solution:

Créez une application, où et quand elle libère toutes ses ressources dès qu'elle est terminée Supprimez tout le processus d'arrière-plan une fois l'application fermée Vérifiez et évitez d'exécuter l'application à partir de plusieurs sources telles que Batch Process, Planificateur de tâches et external outils en même temps . Recherchez les dépendances de l'application et des ressources et nettoyez le code si nécessaire.

0

Donc .. J'avais remarqué dans l'observateur d'événements que cet incident correspondait à une erreur "System.IO.FileNotFoundException". 

J'ai donc lancé ProcMon et remarqué qu'un des dll du programme ne parvenait pas à charger vcruntime140. J'ai donc simplement installé vs15 Redist et cela a fonctionné. 

0
mirh

Nous avons eu cette erreur lorsque la chaîne de connexion à notre base de données était incorrecte. La clé pour déterminer cela consistait à exécuter le blah.dll dotnet qui fournissait un stacktrace nous indiquant que l'instance de serveur SQL spécifiée était introuvable. J'espère que ça aide quelqu'un.

0
dellyjm