40

アプリケーションのいくつかの異なる場所で AccessViolationException がスローされるのを見始めました。テストサーバーである私の開発用PCでは発生しませんでした。また、2 つの実稼働サーバーのうちの 1 つにしか現れませんでした。実稼働サーバーの 1 つでのみ発生しているように見えたので、サーバーにインストールされている .net フレームワークのバージョンを調べ始めました。


(何らかの奇妙な理由で) 問題が発生した運用サーバーには 2.0 sp2、3.0 sp2、および 3.5 sp1 があり、他の運用サーバーとテスト サーバーには 2.0 sp1 があることがわかりました。


私のアプリは 2.0 フレームワークのみを対象としており、運用サーバーからすべてのフレームワーク バージョンをアンインストールし、2.0 sp1 のみをインストールすることにしました。これまでのところ、問題を再現できませんでした。とても興味深い。

開発用 PC: コンパクト 2.0 sp2、コンパクト 3.5、2.0 sp2、3.0 sp2、3.5 sp1 テスト サーバー: 2.0 sp1 実稼働サーバー1: 2.0 sp1 実稼働サーバー2: 2.0 sp2、3.0 sp2、3.5 sp1

さて、問題を再現できない理由2.0 sp2 を搭載した私の開発用 PC には、わかりません。このアクセス違反は、リモーティングを使用する一部のソフトウェアで発生する可能性があるという噂を聞きましたが、実際にリモーティングが発生している場合はアクセス違反は発生しません。今のところ 2.0 sp1 のみを使用しても問題ありませんが、誰かがこの問題を抱えているかどうか、フレームワークの新しいバージョンの回避策を見つけたかどうかを知りたいと思っています。

いくつかの例外とそのスタック トレースを次に示します。

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)
4

14 に答える 14

13

私も同じ問題を抱えていました。2.0は正常に機能しました。3.5 sp1までインストールした後、アプリケーションはアクセス違反を取得します。

http://support.microsoft.com/kb/971030をインストールすると、LCGを使用していなくても、問題は解決しました。

于 2010-06-09T11:44:20.560 に答える
11

マイクロソフトはまた、しばらくの間.NET 2.0プラットフォームを悩ませてきた「保護されたメモリの読み取りまたは書き込みを試みました」というエラーを防ぐための修正プログラム(2007年7月2日)をリリースしました。http://support.microsoft.com/kb/923028を見てください-それがあなたに当てはまるかどうかはわかりませんが、あなたがそれをチェックしたいかもしれないと思いました。

于 2009-05-17T23:08:50.700 に答える
4

VS 2013 の場合、.NET Framework 4.5.1 には、SQL Server / TCP ソケットを処理する際のAccessViolationExceptionバグ(KB2915689) もあります。.NET Framework 4.5.2にアップグレードすると、この問題が修正されます。

報告された VS.NET AccessViolationException

保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。

于 2014-12-30T22:40:58.400 に答える
1

一部のWinFormsで「Show」メソッドを呼び出すと、通常、「保護されたメモリの読み取りまたは書き込みを試みました」というメッセージが表示されます。確認したところ、これらのフォームについて特別なことは何も表示されていません。これが機能する理由はわかりませんが(誰かが教えてくれるかもしれません)、通常、フォームの「Load」イベントで実行されるコードを「Shown」イベントに移動すると修正され、二度と表示されません。

于 2012-12-03T20:03:27.647 に答える
1

こんにちは 2 つの理由が考えられます。

  1. アンマネージ コードがあり、マネージ コードから呼び出しています。このコードの実行を妨げています。これらのコマンドを実行して、PC を再起動してみてください

    コマンド: netsh winsock リセット

cmd.exeコマンドを開いて実行する"netsh winsock reset catalog"

  1. ウイルス対策は、管理されていないコードを有害と見なし、このコードの実行を制限しています ウイルス対策を無効にしてから確認してください
于 2015-10-20T06:29:46.903 に答える
1

OLEDB を使用していましたが、SQL クライアントに切り替えたところ、このエラーに関する問題が解決されました。

于 2012-02-14T17:21:11.493 に答える
1

私の場合、これは、IIS サーバーのアプリケーション プールに「32 ビット アプリケーションを有効にする」=True を設定したときに修正されました。

于 2016-06-10T10:40:37.740 に答える
0

私の場合、共有ライブラリの 1 つで使用されているフォントがシステムにインストールされていませんでした。

于 2016-10-06T09:32:18.750 に答える
0

この問題の原因となった新しいプロジェクトを作成するときに、EntityFramework を追加するのを忘れていました。

于 2021-03-26T08:19:52.633 に答える