Versuch, geschützten Speicher zu lesen oder zu schreiben
Habe ich begonnen zu sehen, eine AccessViolationException geworfen in meiner Anwendung mehrere verschiedene spots. Es nie eingefallen auf meinem Entwicklungs-pc, unsere test-server. Es auch nur naheliegend, sich am 1 unserer 2 Produktions-Server. Da es nur geschah auf einer unserer Produktions-Server, schaute ich mir das installiert .net framework-Versionen auf den Servern.
Ich fand, dass (aus irgendeinem seltsamen Grund), die Produktions-server ist, der Probleme hatte, 2.0 sp2, 3.0 sp2 und 3.5 sp1, während der andere Produktions-server und dem test server 2.0 sp1.
Meiner app nur Ziele das 2.0-framework, entschieden deinstallieren Sie alle framework-Versionen aus dem Produktions-server und installieren Sie nur das 2.0 sp1. So weit ich habe nicht in der Lage, das problem zu reproduzieren. Sehr interessant.
Entwicklungs-pc: kompaktes 2.0 sp2 compact 3.5, 2.0 sp2, 3.0 sp2, 3.5 sp1
Test-server: 2.0 sp1
Produktion server1: 2.0 sp1
Produktion server2: 2.0 sp2, 3.0 sp2, 3.5 sp1
Nun, warum kann ich nicht reproduzieren Sie das problem auf meinem Entwicklungs-pc hat 2.0 sp2 drauf, habe ich nicht herausfinden können. Ich hörte Gerüchte, dass diese Zugriffsverletzung kann passieren, auf eine software, die remoting verwendet, welche mir tut, aber die Zugriffsverletzung nie happends, wenn remoting ist tatsächlich anspringt. Ich bin ok mit nur 2.0 sp1 für jetzt, aber ich bin wirklich daran interessiert zu wissen, ob jemand dieses Problem gehabt hat, und wenn Sie fand einen workaround für neuere Versionen der frameowork.
Hier ein paar Ausnahmen und Ihre stack-traces:
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at ICSharpCode.TextEditor.TextArea.HandleKeyPress(Char ch)
at ICSharpCode.TextEditor.TextArea.SimulateKeyPress(Char ch)
at ICSharpCode.TextEditor.TextArea.OnKeyPress(KeyPressEventArgs e)
at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
at System.Windows.Forms.Control.WmKeyChar(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
at System.Windows.Forms.Control.DefWndProc(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
at System.Windows.Forms.RichTextBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
InformationsquelleAutor der Frage Jeremy | 2009-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem.
2.0 funktionierte gut. nach der Installation von bis zu 3,5 sp1, application bekommt Zugriffsverletzung.
installiert http://support.microsoft.com/kb/971030 und mein problem ist gelöst, obwohl ich bin nicht mit LCG.
InformationsquelleAutor der Antwort chris
Microsoft auch einen hotfix veröffentlicht (2. Juli 2007) um zu verhindern, dass der Fehler "es wurde Versucht, zum Lesen oder schreiben von geschütztem Speicher", wurde plagten .NET 2.0-Plattform für einige Zeit jetzt. Blick auf http://support.microsoft.com/kb/923028 - nicht sicher, ob es auf dich zutrifft, aber dachte, möchten Sie vielleicht, check it out.
InformationsquelleAutor der Antwort Ash
Ich hatte das gleiche problem nach dem Upgrade aus .NET 4.5 .NET 4.5.1. Was fixiert es für mich war, diesen Befehl ausführen:
netsh winsock reset
InformationsquelleAutor der Antwort Cocowalla
Für VS 2013, .NET Framework 4.5.1 hat auch eine
AccessViolationException
bug (KB2915689) im Umgang mit SQL-Server /TCP-Sockets. Upgrade auf .NET Framework 4.5.2 der dieses problem behebt.Berichtet VS.NET AccessViolationException
InformationsquelleAutor der Antwort SliverNinja - MSFT
War ich mit OLE-DB und ich wechselte zu SQL-Client und es löste mein problem mit diesem Fehler.
InformationsquelleAutor der Antwort Angela
Ich in der Regel get "Versucht, Lesen oder schreiben von geschütztem Speicher, der beim Aufruf der "Show" - Methode auf einige WinForms. Ich habe überprüft, und es scheint nicht etwas besonderes über diese Formen. Ich weiß nicht, warum das funktioniert (vielleicht kann mir jemand sagen), aber in der Regel verschieben Sie den code, der ausgeführt wird in der "Load" - Ereignis des Formulars, um den "Gezeigten" Fall behebt es für mich und ich nie wieder sehen.
InformationsquelleAutor der Antwort Denis
Überprüfen, um sicherzustellen, dass Sie nicht haben, threads in threads. Das ist es, was diesen Fehler verursacht hat für mich. Finden Sie unter diesem link: Versucht, Lesen oder schreiben von geschütztem Speicher. Dies ist Häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist
InformationsquelleAutor der Antwort Joe Brunscheon
In einigen Fällen hinzufügen "Option Strict On" in VB.NET und die Lösung aller Probleme, die es findet durch die richtige casting hat dieses problem für mich.
InformationsquelleAutor der Antwort Denis
In meinem Fall wurde dieses Problem behoben, wenn ich "Enable 32-Bit applications" =True " für den Anwendungspool in IIS-server.
InformationsquelleAutor der Antwort dogrishin
In meinem Fall verwendeten Schriftarten in einer der gemeinsam genutzten Bibliothek war nicht im system installiert.
InformationsquelleAutor der Antwort emrah ozer
Kann das problem aufgrund der gemischten Plattformen erstellen-DLLs in das Projekt. ich.e Sie bauen Ihr Projekt auf jeden Beliebigen CPU -, haben aber einige DLLs in das Projekt schon gebaut für x86-Plattform. Diese wird dazu führen, dass zufällige Abstürze wegen der unterschiedlichen Speicher-mapping der 32bit-und 64bit-Architektur. Wenn alle DLLs werden für eine Plattform, auf der das problem gelöst werden kann. Für die Sicherheit versuchen, bulinding für 32-bit-x86-Architektur, denn es ist die am meisten kompatibel.
InformationsquelleAutor der Antwort Muhammad Yousaf Sulahria
In meinem Fall hatte ich Probleme mit den "Umgebungsvariablen" beim hinzufügen der Referenz auf meiner COM-DLL.
Wann habe ich den Verweis auf mein Projekt, ich war auf der Suche nach P:\Core Weg, während ich noch die c:\core Weg in die Vergangenheit, in die path Umgebung varaible.
Also mein code war der Versuch falschen Weg zuerst. Ich entfernt das und un-registriert die DLL Referenz und re-registriert meine DLL-Verweis mit (regsvr32). Hoffe, das hilft.
InformationsquelleAutor der Antwort Amit Dodake
Hi gibt Es zwei mögliche Gründe.
Wir haben un-verwalteten code, und wir rufen es aus verwaltetem code. verhindert wird, um diesen code auszuführen.
versuchen Sie die folgenden Befehle ausführen und starten Sie Ihren pc
cmd: netsh winsock reset
öffnen
cmd.exe
und Befehl ausführen"netsh winsock reset catalog"
deaktivieren Sie anti-virus und überprüfen Sie dann
InformationsquelleAutor der Antwort Santokh SIngh