Comment déboguer w3wp clr.erreur de dll

mon client a un ASP.NET application installée sur deux serveurs de production (équilibré avec NLB, mais ce n'est pas pertinent). Les deux serveurs s'écrasent toutes les 3-4 heures avec l'erreur suivante:

nom de l'application Défaillante: w3wp.exe, version: 7.5.7601.17514, horodatage: 0x4ce7afa2

Nom du module Faulting: clr.dll, version: 4.0.30319.18034, horodatage: 0x50b5a783

Code d'Exception: 0xc00000fd offset de défauts: 0x0000000001a840
151950920" Id du processus défaillant: 0xd50

Application défaillante heure de début: 0x01ce97fe076d27b4

Chemin d'application défectueux: c:windowssystem32inetsrvw3wp.exe

Trajectoire du module défectueux: C:WindowsMicrosoft.NETFramework64v4.0.30319clr.dll numéro de rapport: e0c90a5f-0455-11e3-8f0e-005056891553

Je ne sais pas comment déboguer ou par où commencer. Lorsque le plantage est sur le point de se produire, l'utilisation du processeur du serveur passe à 100% et y reste. Le processus en cause est w3wp.EXE. Je ne suis même pas sûr que mon code génère l'erreur ou pas. C'est IIS 7.5. Tout pointeur serait grandement apprécié.

35
demandé sur Kirk Woll 2013-08-20 16:56:58

4 réponses

il semble que vous ayez une Exception StackOverflow, qui est causée par une récursion sans limite (une fonction qui s'appelle à plusieurs reprises, etc). Cela ne peut pas être attrapé par le bloc d'essai/capture régulier. Vous pouvez suivre le problème en utilisant DebugDiag et WinDbg .

DebugDiag peut être configuré pour générer un dump crash lorsque L'Exception Stackoverflow se produit. Télécharger à https://www.microsoft.com/en-us/download/details.aspx?id=49924 .

  1. ouvrez DebugDiag et cliquez sur Ajouter une règle.
  2. "Crash" doit déjà être sélectionné. Cliquez Sur Suivant.
  3. Choisir "Une application web IIS piscine" et cliquez sur Suivant.
  4. sélectionnez l'Application pool et cliquez sur Suivant.
  5. vous devriez être dans la fenêtre de Configuration avancée. Cliquez sur Exceptions sous Paramètres Avancés.
  6. cliquez sur Ajouter une Exception et choisissez Stack Overflow, avec un type D'Action de Full Userdump
  7. cliquez sur OK et enregistrer et fermer.

la prochaine fois qu'une exception Stacoverflow se produit, vous aurez un crash dump. Maintenant, il faut interpréter le fichier dump.

Debugging tools for Windows fait partie du SDK de Windows et peut être téléchargé à l'adresse suivante: http://msdn.microsoft.com/en-US/windows/hardware/gg463009 / .

  1. pour utiliser WinDbg, vous aurez besoin d'obtenir les fichiers de symboles. Téléchargez les fichiers de symboles et placez-les dans un dossier local.
  2. ouvrez WinDbg. Dans le menu Fichier, cliquez le chemin du fichier de symbole.
  3. dans la boîte de chemin de symbole, la documentation dit de taper la commande suivante: SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols , cependant je viens de mettre dans le local dossier pour les symboles et il a fonctionné très bien.
  4. sortir et ouvrir WinDbg de nouveau, et d'Ouvrir de Vidage sur incident et de localiser le fichier de vidage qui a été créé par DebugDiag.
  5. dans la ligne de commande, tapez .loadby sos clr
  6. maintenant type !CLRStack

dans les résultats, il devrait être clair ce que le problème est (vous verrez probablement un tas de lignes montrant la fonction(s) qui a été appelé à plusieurs reprises).

60
répondu MikeSmithDev 2016-07-26 20:40:27

un ajout à la réponse ci-dessus. Développer L'extension de L'Explorateur qui a obtenu l'erreur à la connexion de l'utilisateur. Donc pour l'utilisateur il regarde "l'écran clignotant" (pendant que l'Explorateur essaye de démarrer et de se crash, puis redémarre etc). Connecté sous un autre compte utilisateur installé DebugDiag et WinDbg. J'utilise Windows 8.1 avec .Net 4.0 avec toutes les dernières mises à jour d'aujourd'hui (13 janv. 2014) ) Essayé de télécharger quelques symboles localement, mais WinDbg ne peut pas charger clr.apb en raison de mauvaises signaure.

Résolu en utilisant symboles en ligne-utilisez "SRV* http://msdl.microsoft.com/download/symbols " comme chemin de symboles.

2
répondu Arkady Marchenko 2014-01-13 14:59:06

une Autre cause pourrait "infini de façon récursive de la fonction". Lorsque des fenêtres de boucle infitine se produisent, essayez d'éviter l'impasse et désactivez le pool d'applications releated.

j'ai rencontré le même problème aujourd'hui. J'ai une fonction récursive qui liste les parents projet-sous-projet. Un projet est placé lui-même projet parent et lorsque la fonction de réessaiement liste tous les parents-sous-projet, boucle infinie se produit.

0
répondu Dreamcatcher 2014-02-20 10:36:11

j'ai été en mesure de vérifier de l'Observateur d'Événements -> Journaux Windows -> Système et de trouver des

Application pool "DankAppPool" est automatiquement désactivé en raison de une série d'échecs dans le(s) processus desservant ce bassin d'applications.

ci-dessous:

Un processus servant de pool d'applications 'DankAppPool' souffert d'une fatale erreur de communication avec le service D'Activation de processus de Windows. Le le numéro de processus était "5704". Le champ de données contient le numéro d'erreur.

et:

le service de QueueMonitor s'est terminé de façon inattendue. Il l'a fait 32 temps(s). Les mesures correctives suivantes seront prises en 60000 millisecondes: redémarrez le service.

au moins le service de QueueMonitor est un point de départ.

0
répondu sirdank 2017-10-13 14:17:52