System.ExecutionEngineException Fehler
Ich habe versucht, um herauszufinden, mehr über dieses problem und ich bin nicht viel Glück. Immer wieder lese ich, dass Anwendungen, die nicht haben sollte dieser Fehler kommen, und obwohl das ist alles schön und gut, es tut mir nicht sagen, was diesen Fehler verursachen können, zu zeigen.
Ich weiß, diese Frage ist sehr breit, wie ich bin sicher, es kann mehrere Ursachen für diesen Fehler also werde ich versuchen, einzugrenzen, ein bisschen.
Arbeite ich in VS2003 entwickelt eine Anwendung, die verwendet C++.NET
Verwendet die Anwendung meist nicht verwalteten code und wenig verwaltetem code (aufgrund der starken Störungen durch den garbage collector). Also würde ich es bewerten 95% unmanaged, 5% geschafft
Habe ich irgendwo gelesen, dass instabil/fehlerhaft/falsche unmanaged code Durcheinander bringen können Teile der CLR-Speicher wodurch es beschädigt ist und wirft diesen Fehler.
Da 95% der Anwendung nicht verwaltet wird, ich bin mir nicht sicher, wo zu Beginn der Suche.
Vielleicht die paar Klassen, die die Interaktion zwischen verwaltetem und nicht verwaltetem?
Was ist marshalling von Daten von verwalteten an nicht verwaltete?
Kann eine schlechte null-Zeiger Ursache dieses Versagens?
Was andere Probleme die das verursachen kann? Array Index out of bounds? Was ist ein Null-Objekt?
Informationen/Papier/Artikel geben kann, dass eine nette Liste der möglichen Ursachen für das System.ExecutionEngine scheitern würde geschätzt!
Basiert auf Antworten, die diese Ausnahme verursacht werden kann in mehrere Szenarien, in denen htem Antwort für bessere Sichtbarkeit.
Liste der möglichen Ursachen/Szenarien -
- Argument mismatch zwischen C++ und C#
- Während mit Reflexion
- WCF-Dienst versucht, um eine IList-oder IEnumerable hier hier
- Mit Profiling-tools
- mit der std-Anweisung in assembler
- Aufruf ::FreeLibrary() mehrere Male
- .NET Zwischenablage Aufrufe
- mit dem Unity-Framework
- Die Verwendung der falschen Marshalling
- Mit
INotifyPropertyChanged
Mögliche workarounds/Lösungen -
InformationsquelleAutor der Frage | 2009-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser sollte nicht zu ernst genommen werden, aber ich schaffte es, diese Ausnahme, während mit etwas Spaß mit Reflexion:
InformationsquelleAutor der Antwort Danië1
Hatte das gleiche problem - mein Fehler war, entpuppte sich als argument mismatch zwischen meine C# - code und meine C++ - native dll. Habe ich ein argument für die C++ - Funktion und Fehler beim hinzufügen der C# - Seite.
InformationsquelleAutor der Antwort Ann
Ich traf Sie beim Aufruf einer Funktion in einer nicht verwalteten Bibliothek, wenn mein managed code kompiliert wurde für die Freigabe. Der Fehler geht Weg, wenn zusammengestellt, für das debugging.
InformationsquelleAutor der Antwort Dave
Zitiert aus dem MSDN-Referenz-Seite für
System.ExecutionEngineException
:InformationsquelleAutor der Antwort Alexandre Brisebois
Es ist ein bekannter bug, wenn ein WCF-Dienst versucht, um eine IList-oder IEnumerable.
http://connect.microsoft.com/wcf/feedback/details/433569/wcf-throws-an-executionengineexception-when-returning-an-array-as-ilist-t
InformationsquelleAutor der Antwort Jimtronic
Ehrlich gesagt, die einzige Zeit, die ich je gesehen habe, diese Ausnahme ist, wenn ich mit der Compuware DevPartner tools zu tun, einige profiling-und code-Analyse. DevPartner Haken tief in den Kern der CLR zu tun, es ist Arbeit, aber es ist voller bugs, so Schrauben Sie die CLR-up.
Ich musste mein Rechner neu starten (und denken Sie daran, nie klicken Sie auf die DevPartner toolbar buttons immer wieder), um die Dinge zurück zu normal.
Wenn du nicht mit devpartner, dann werden Sie wahrscheinlich haben einige nicht verwaltetem code, die Dresch-Speicher verwendet, die von der CLR.
Ich würde raten, den ersten zu tun einen Neustart und dann versuchen auf die Spur, welcher Fehler, den Sie haben, die löschen den Speicher. Suchen Sie für Pufferüberläufe, schreiben uninitialised Zeiger, und all die anderen üblichen verdächtigen.
InformationsquelleAutor der Antwort Orion Edwards
Obwohl dieser thread ist inzwischen ziemlich alt, ich werde schweigen, mein eigenes Vorfall mit dieser Ausnahme. Ich habe über ihn kommen, während der Entwicklung einer ArcGIS-Erweiterung, geschrieben mit VB.NET (Visual Studio 2005). ArcGIS basiert stark auf der COM-Technologie daher .NET-COM-interop beteiligt ist. Ich habe nicht gefunden, die Ursache der Ausnahme bis jetzt, aber ich nehme an es könnte zu tun haben mit dem Bau der UNO-veröffentlicht am COM-Objekt-Instanzen, da die Ausnahme immer nur Auftritt nachdem Sie die software Knirschen Geometrien und zahlen für einige Zeit.
InformationsquelleAutor der Antwort stakx
Ich bin immer diese
ExecutionEngineException
wenn nur mit standard .NETTO-Zwischenablage anrufen.Mein code ist 100% gelungen. So, es scheint die .NET Framework Probleme hat.
dem Daten-Typ "
EnhancedMetafile
", die in der Liste von Formaten in die Zwischenablage zu kopieren.InformationsquelleAutor der Antwort Brian Kennedy
aktualisieren Sie Ihre Anwendung .net 4.0 ODER 4.5, weil diese Ausnahme hinfällig ist.
"Hinweis: Diese API ist mittlerweile veraltet."
siehe: http://msdn.microsoft.com/en-us/library/system.executionengineexception(v=vs. 100).aspx
InformationsquelleAutor der Antwort juFo
Vor kurzem habe ich entdeckt, dass die Verwendung der
std
Anweisung in assembler, um die Richtung festzulegen Flagge ohne es deaktivieren, wenn Sie fertig sind (cld
) kann diesen Fehler verursachen. Ich bin mit .Net 4.0.InformationsquelleAutor der Antwort Brent
Komme ich gerade über diese Ausnahme, während der Arbeit auf WPF-Anwendung. VS zeigte, dass es passiert ist während der Benachrichtigung der änderung der Eigenschaft durch
NotifyPropertyChanged
call(INotifyPropertyChanged
).Sieht sehr seltsam für mich, und es passiert nur einmal; er hielt die Debugger-Sitzung und nicht ist passiert nach dem ausführen der Anwendung wieder.
InformationsquelleAutor der Antwort akjoshi
Einen Fall mehr, wenn
System.ExecutionEngineException
ist, die ausgelöst wird, wenn eine unbehandelte Ausnahme geworfen wird, in Stellvertretung zur Verfügung gestelltThreadPool.QueueUserWorkItem()
Funktion.InformationsquelleAutor der Antwort Mita
Ich habe eine dieser wenn meine C# - Modul (aufgerufen von einem C++/MFC-Anwendung gebaut, die mit /CLR), die versehentlich de-referenziert ein null-Zeiger. So ist es möglich, für die Ausnahme auftreten, aufgrund von einen bug in der "user-code".
Kevin
InformationsquelleAutor der Antwort
Hatte ich diese Ausnahme beim ausführen von verwaltetem code in einer anderen version, als ich es kompiliert mit.
Vielleicht jemand hilft...
InformationsquelleAutor der Antwort toba303
Komme ich gerade über diese Ausnahme beim schreiben einer c# - Programm mit dem Unity-Framework.
Bin ich mit VS 2010 und .NET 3.5
Grundsätzlich, wenn Sie die registrieren Sie einen Typ in einem
UnityContainer
:aber
AClass
nicht über einen Konstruktor ohne Argumentedann, wenn Sie die Klasse instanziieren erhalten Sie die
System.ExecutionEngineException
InformationsquelleAutor der Antwort Matt Ellen
Bekomme ich diese Exception beim anzeigen von pdf-Dateien mit einem externen viewer. Ich denke, der Zuschauer selbst ist die Wurzel allen übels. Es muss etwas außerhalb der .NET framework offensichtlich.
InformationsquelleAutor der Antwort Jowen
Verwendung der falschen Marshalling mich veranlasst, diese Ausnahme.
Ich habe ein reines C -*.dll verwenden; ich Schreibe einen wrapper in C#, mit DllImport; dann habe ich das Marshalling zu lassen, aus den string-Parameter zu füllen, ein StringBuilder-Objekt, wie folgt:
Mit
UnmanagedType.LPStr
veranlasst mich, die Ausnahme; mitUnmanagedType.BStr
ist, die richtige string-marshal in diesem Fall, der gelöst mich das problem.Nur meine 2 cent. 🙂
InformationsquelleAutor der Antwort Ferdinando Santacroce
Mir gelungen, diese Ausnahme beim Debuggen einer C# 4.0-web-Anwendung, die eine assembly für die Verwendung eines Azure service bus. Diese Baugruppe hat einen Fehler, er wird versuchen, die Schleife ewig, bis eine Nachricht erhalten, von einem geschlossenen servicebus, aber der exception-handler fängt die Ausnahme. Jedoch, während des Debuggens den code, es tatsächlich getötet Visual Studio 2012 mit dieser Ausnahme!
Ja, VS2012 war derjenige, der die Ausnahme ausgelöst hat.
InformationsquelleAutor der Antwort Wim ten Brink
Nur um die Liste der möglichen Ursachen, ich habe diese Fehlermeldung, wenn Sie versuchen zu serialise IEnumerable<> mit einem komplexen Typ.
Wechsel von
IEnumerable<>
zuList<>
ist das problem gelöst.InformationsquelleAutor der Antwort
Hatte ich dies geschehen und es war, weil ich den Aufruf
::FreeLibrary()
mehrmals mit dem gleichen DLL GRIFF. (Die DLL war eine verwaltete C++ - dll: eine verwaltete C++ - wrapper über einige C# - Funktionen)InformationsquelleAutor der Antwort Adam Tegen
Werde ich hinzufügen, wie ich dieses.
Verwenden .Net 4 code-Kontakte, eine
Contract.Ensures(Contract.Result<object>() != null)
löst diese Ausnahme aus, wenn Sie Geltend machen, die auf Vertrag Scheitern überprüfen Sie in der Eigenschaften-Seite für Code-Verträge. Deaktivieren Sie dieses Kontrollkästchen nicht deaktivieren Sie die überprüfung jedoch. Erhalten Sie das erwartete "Post-condition failed-Nachricht."InformationsquelleAutor der Antwort Andy
Bekam ich diese Fehlermeldung, wenn ich zog eine Festplatte von einem computer zu einem anderen (win 8 neu installiert die Treiber automatisch ), aber ich vermute, dass die native gened exes nicht funktioniert.
InformationsquelleAutor der Antwort kns98
Immer dieses problem in der reinen managed WPF-Anwendung in einem ziemlich unschuldigen situation, so scheint es mir. Ich habe ein Steuerelement in einem raster, die ich ein-oder ausblenden möchten, so bin ich der Einstellung, es ist die Sichtbarkeit um der Sichtbarkeit.Zusammengebrochen oder Sichtbarkeit.Sichtbar. Es beginnt zusammengebrochen. Ich drücke eine Taste und es wird auf sichtbar gesetzt und scheint nur fein. Ich drücke einen anderen Knopf und legen Sie es auf brach-und boom - groß-hässlich-Fehler. Nichts besonderes oder ungewöhnliches. Dies ist mit 4.5. Sehr seltsam. Wenn ich mir die Daten für die Fehler, die es sagt-System.Sammlungen.EmptyReadOnlyDictionaryInternal.
InformationsquelleAutor der Antwort Darrell Plank
Ich bekomme diese Fehlermeldung in einem normalen LINQ-Abfrage, wo bin ich wieder FirstOrDefault mit VS2010
InformationsquelleAutor der Antwort Sofia Khwaja
Mit VS2015 ASP.NET Framework 4.5, die ich gerade hatte, um wieder aufzubauen und wieder zu laufen.
InformationsquelleAutor der Antwort Afra
Neue Web Forms-Anwendung
Jeder Seite zu öffnen (sagen wir Standard.aspx)
Hinzufügen GridView-Steuerelements zum Formular
Klicken Sie auf das GridView-Steuerelement, dann auf den kleinen Pfeil (oben rechts). Wenn ich auf "Spalten Bearbeiten" oder "neue Spalte Hinzufügen" oder "Datenquelle" > Neue Datenquelle, Visual Studio 2015 Abstürze mit System.ExecutionEngineException in mscorlib.dll
InformationsquelleAutor der Antwort Knez Drvene Klupice