Quelle serait la cause de TOUT .NET application crash immédiatement... à l'exception d'un projet que j'ai créer et de Débogage dans Visual Studio?
Mon logiciel a récemment été muté à un client qui a dit que la demande a été s'écraser immédiatement après qu'il a commencé. Après un premier débogage, le client m'a fourni un accès à distance à des ordinateurs qui a été incapable d'exécuter l'application. j'ai trouvé que le crash n'est pas spécifique à ma demande. Toute application qui dépendait de l' .NET framework s'est écrasé immédiatement.
Idéalement, Visual Studio 2008 a été installé donc j'ai créé une rapide application hello world sur elle et cliqué Debug. L'application a bien fonctionné. Mais, ensuite, quand j'ai essayé d'exécuter les binaires générés dans le /bin/Debug/HelloWorld.exe répertoire en dehors de visual studio, il s'est écrasé.
Liste des choses que j'ai essayé (mise à JOUR):
- J'ai vérifié que "tout le monde" a Lire&les autorisations d'Exécution c:\Windows.
- Pour vérifier que le problème a été avec le .NET Framework (et pas à ma demande), j'ai tenté de télécharger la Peinture .NET sur les ordinateurs. Le programme d'installation de frontend s'est écrasé dans la même manière.
- Effectué une réparation de la .NET framework comme indiqué dans http://support.microsoft.com/kb/908077 (Garçon était ce plaisir et de temps). Pas de chance.
- Installé .NET 3.5 SP1 (avant elle avait simplement .NET 3.5) Note: ma demande cibles 2.0 j'ai donc fait cela plus comme un long shot... mais j'ai appris dans le processus .NET 3.5 SP1 met également à jour les structures sous-jacentes.
- Couru Aaron Stebner de l' .NET le programme d'Installation Outil de Vérification de la. Cet outil a indiqué que .NET a été installé avec succès. (J'ai oublié si j'ai coché toutes les versions, mais au moins 2.0 travaillé).
- Testé quelques mini bonjour tout le monde, les applications qui ont été ciblées pour .NET 2.0 et .NET 3.5 et les deux s'est écrasé dans la même manière.
- Essayé de lancer .NET applications par l'intermédiaire de windbg ligne de cmd. Faisant cela m'a permis d'invoquer mon simple hello world applications. Alors, simple .NET bonjour tout le monde fonctionne quand il est invoqué par windbg ou par le lancement via le débogage dans visual studio... mais ne fait pas si j'essaie de l'exécuter de manière autonome.
J'ai créé un fichier de vidage à l'aide de WinDbg. Il n'y a pas révélateur pour moi.
FAULTING_IP: mscorwks!PEImage::GetEntryPointToken+21 79f4ff9d f6401010 test byte ptr [eax+10h],10h
EXCEPTION_RECORD: 0012f710 -- (.exr 0x12f710) ExceptionAddress: 79f4ff9d (mscorwks!PEImage::GetEntryPointToken+0x00000021) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 00000010 Attempt to read from address 00000010
FAULTING_THREAD: 00000b44
PROCESS_NAME: MyProcess.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
DETOURED_IMAGE: 1
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
MANAGED_STACK: !dumpstack -EE OS Thread Id: 0xb44 (0) Current frame: ChildEBP RetAddr Caller,Callee
EXCEPTION_OBJECT: !pe cb10b4 Exception object: 00cb10b4 Exception type: System.ExecutionEngineException Message: <none> InnerException: <none> StackTrace (generated): <none> StackTraceString: <none> HResult: 80131506
MANAGED_OBJECT_NAME: System.ExecutionEngineException
CONTEXT: 0012f72c -- (.cxr 0x12f72c) eax=00000000 ebx=00000000 ecx=00000000 edx=0000000e esi=001a1490 edi=00000001 eip=79f4ff9d esp=0012f9f8 ebp=0012fa1c iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 mscorwks!PEImage::GetEntryPointToken+0x21: 79f4ff9d f6401010 test byte ptr [eax+10h],10h ds:0023:00000010=?? Resetting default scope
READ_ADDRESS: 00000010
FOLLOWUP_IP: mscorwks!PEImage::GetEntryPointToken+21 79f4ff9d f6401010 test byte ptr [eax+10h],10h
BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
PRIMARY_PROBLEM_CLASS: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
DEFAULT_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN
LAST_CONTROL_TRANSFER: from 79ef02b5 to 79f4ff9d
STACK_TEXT: 79f4ff9d mscorwks!PEImage::GetEntryPointToken+0x21 79ef02b5 mscorwks!PEFile::GetEntryPointToken+0xa0 79eefeaf mscorwks!SystemDomain::ExecuteMainMethod+0xd4 79fb9793 mscorwks!ExecuteEXE+0x59 79fb96df mscorwks!_CorExeMain+0x15c 7900b1b3 mscoree!_CorExeMain+0x2c 7c817077 kernel32!BaseProcessStart+0x23
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: mscorwks!PEImage::GetEntryPointToken+21
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: mscorwks
IMAGE_NAME: mscorwks.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 471ef729
STACK_COMMAND: .cxr 0012F72C ; kb ; dds 12f9f8 ; kb
FAILURE_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN_80000003_mscorwks.dll!PEImage::GetEntryPointToken
BUCKET_ID: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_SHUTDOWN_DETOURED_mscorwks!PEImage::GetEntryPointToken+21
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/MyProcess_exe/2_4_4_39/4a8a192c/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
Edit 1:Le journal des événements de détails pour cette erreur de dire que c'est un
.NET Runtime version 2.0.50727.3053 Mortels Moteur d'Exécution d'Erreur (7A097706)(80131506).
(source: blakerobertson.com)
Edit 2 (10-7-09): Cette question est toujours actif.
Edit 3 (3-29-10): Cette mise à jour est de laisser tout le monde sais que je n'ai jamais réussi à résoudre le problème. Le client qui est de la machine c'était perdu d'intérêt dans la solution et il suffit de reimaged la machine :(. Merci pour toutes les contributions que.
- C'est un peu cruel - mais je suis heureux de suivre cette question. Vraiment intéressant. Bonne chance!
- Avez-vous encore le fichier de vidage disponible, et vous avez un moyen de le partager?
- Avez-vous jamais obtenir ce résolu? Quel était le problème?
- Malheureusement, non, je N'ai pas. Client perdu de son intérêt.
Vous devez vous connecter pour publier un commentaire.
Basé sur votre windbg sortie il ressemble à quelqu'un a injecté une DLL dans le processus à processus de lancement, et que l'injection n'est pas conçue pour n'importe quelle version d'mscorwks qui a été chargé. Si c'est occasionnel poste de travail (p. ex. secrétaire), je l'aurais confisqué pour MIS à inspecter à la recherche de logiciels malveillants. Si c'est une machine assis dans une salle de serveur je regarde vers le client pour effectuer un déménagement vers une autre machine.
Je ne soupçonne pas ce qui allait se passer à tout autre client, et en 8 ans .NET développement de la seule chose qui peut (évidemment) cause le comportement que vous décrivez est une tentative pour exécuter une .NET Application sur un système avec une ancienne version du framework est installé (par exemple, manque de soutien, les résultats dans une norme debug/annuler dialogue sur la plupart des versions de Windows) et qui n'est PAS ce qu'est ce problème. C'est pas liée à l'Architecture du Processeur, Version de Cadre, ni la SP niveau, il n'est pas lié à un quelconque commercial AV logiciel, ni aucun réseau commercial-logiciel de sécurité.
C'est clairement pas quelque chose dans votre code, et je ne vois pas que c'est quelque chose que vous pouvez fixer à votre client. Je ne connais pas d'outil ni de la série de mesures que vous pouvez utiliser pour résoudre ce problème à court d'avoir le client d'une nouvelle image de la machine cible. Avant de le faire, de nouveau, les fantômes par SIG/pour logiciels malveillants potentiels (en particulier, les logiciels malveillants qui ne serait pas distribué par le public en général.)
De lecture: http://research.microsoft.com/apps/pubs/default.aspx?id=68568
Bonne chance.
Quelques membres de notre équipe ont récemment été confrontés à la même question, et ils découvre qu'après la désinstallation
Embassy Trust Suite
par le Système de Vague, tout était revenu à la normale. Le lien suivant conduit à la réponse.http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/6e6b8496-c1f1-4fc9-bcc9-2129a6329804/
Dans le cadre de l'enquête, ils ont également eu lieu à travers tout cela DONC, la question et a demandé que je poste cela comme une solution qui pourrait aider les autres.
Nous avons eu un problème similaire dans un déploiement à grande échelle dans tous les cas, l'exécution de la réparation sur le cadre fixe de la question que je voudrais lui donner un essai.
J'ai eu un problème similaire il y a quelques mois (je ne me souviens pas du code d'erreur tout de même). Après avoir essayé beaucoup de choses, la suite résolu le problème (aussi loin que je me souvienne):
Suppression de tous les fichiers temporaires dans le .net dossier temporaire (et aussi la vérification de l'autorisation de ce dossier)
Eu le même problème et il a été résolu en utilisant l'assistant de publication. Voilà comment j'ai découvert la machine cible n'a pas le Visual Basic Powerpack 3.0 paquet installé. Après installation, il fonctionne comme un charme.
J'ai récemment eu le même problème et a fait ces étapes Microsoft .NET Application se bloque et rectifier l' .NET application de s'écraser sans but
Sonne comme vous l'avez vous-même un "plaisir" de là. Je n'ai pas la moindre idée, mais ici, c'est mon karma-se prostituer poignarder dans le noir et suggestions de toute façon.
1) En plus des autorisations d'utilisateur attribué par Windows, il y a aussi un jeu de paramètres de sécurité spécifiquement pour l' .NET framework. Si vous avez l' .NET SDK installé, recherchez l' "de Microsoft .NET Framework Configuration de l'outil de" dans votre Panneau de Contrôle (peut-être sous Outils d'Administration). Voir si les paramètres sont différents il y a à partir de votre machine de dev.
2) je suppose que votre client est sous la coupe d'un régime à son lieu de travail. Voir si vous ou votre client pouvez obtenir vos mains sur une nouvelle installation de Windows où le programme fonctionne et ensuite, travailler avec son groupe, appliquez l'une de leurs exigences (paramètres de sécurité, antivirus, etc.) à un moment jusqu'à ce que votre programme s'arrête de fonctionner. Un bon vieux dernier état de bug hunt. Bien sûr, cela suppose la coopération de son département informatique, donc j'espère que votre programme est important pour un dirigeant quelque part.
Il n'y a pas de solution miracle rapide et je ne pense pas que c'est un problème d'autorisation.
Voici ce que je voudrais essayer
Couple de plus de suggestions à essayer:
De le lancer à l'aide de WinDbg. À l'aide de Fils de Grève, vous devriez être en mesure de voir exactement pourquoi il s'écroule. Il peut y avoir un faible niveau de l'assemblée erreur de chargement. J'ai couru vers le bas à des problèmes similaires à l'aide de WinDbg dans le passé.
Assurez-vous que l'utilisateur n'est pas le lancement de l'application à partir d'un partage réseau. Par défaut, les .Net lève une exception de sécurité lorsque vous tentez de lancer une application à partir d'une source non fiable.
Vous pouvez modifier ce comportement à l'aide de Microsoft .Net Framework utilitaire de Configuration Outils d'Administration.
Depuis il ne se passe pas sur chaque poste client, pourrait-il en être de la RAM? Pouvez-vous redémarrer la mauvaise machine et exécuter l'outil diagnostics de la mémoire?
Pourrait DEP ont été allumé pour cette machine à un certain moment dans le passé? Vous ne seriez pas obtenir un .Net exception pour ce type de sécurité parce que votre application n'a tout simplement pas arriver à courir il y a donc peu de chance de lancer un message d'erreur.
Peut-être ce lien pourrait vous aider à résoudre votre problème La Fixation De L'Erreur “.NET Runtime version 2.0.50727.3053 Mortels Moteur d'Exécution d'Erreur” [.NET].
Quel système d'exploitation (Windows XP, Vista, etc.) ne vos clients pc a installé?
Avez-vous essayé de désinstaller l' .NET Framework (pas de réparation) complètement, puis le réinstallé?
J'ai récemment eu un problème qui a été manifeste dans une manière très similaire. Il s'est avéré que certaines Dll tiers n'ont pas été une partie de ma déploiement (je viens de copier les choses à partir du répertoire bin). J'ai créé une application d'installation qui a ramassé toutes les Dll et une fois ceux-ci arrivés déployé correctement, il a cessé de s'écraser. Il est étrange que c'était un dur échec plutôt qu'une exception.
Cela pourrait ne pas s'appliquer à vous puisque vous dites qu'il s'applique à tout .NET application. Peut-être que vous travaillez dans un ancien fichier de projet avec quelques restes de références?