web-dev-qa-db-ja.com

System.AccessViolationExceptionをランダムに取得するプログラム

さて、私はデバッグに関して多くの問題を抱えています。 VS2013 ProとWindows 8.1を使用しています。どちらも最新です。問題は、デバッグを開始すると、半分の時間でこのエラーがスローされることです。

タイプSystem.AccessViolationExceptionの未処理の例外がSystem.Windows.Forms.dllで発生しました

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

それも私のコードのせいではありません。以下の例として簡単なテストを行いました。このアプリからSystem.Windows.Formsを参照していないことに注意してください。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<int> testing = new List<int>();
                for(int i =0; i < 50; i++)
                {
                    testing.Add(i);
                }

                for (int i = 0; i < 50; i++)
                {
                    Console.WriteLine(testing[i].ToString());

                }

                Console.ReadLine();
            }
        }
    }

何が原因なのか、私にはわかりません。 [OK]をクリックして再度実行すると、ほとんどの場合、問題なく動作します。時々私は二度それをしなければならない。

何か案は?

スタックトレース:

enter image description here

12
FrostyFire

プラットフォームターゲットをx86に変更するとうまくいきました。コードをステップ実行することは、前述の例外なしでは不可能であるようになりました。 Win 8.1 64ビットとVisual Studio 2013を実行しています。

8
Null

私はまた、Visual Studio Express2015を使用してWindows10でこの問題に遭遇しました。 x86にビルドしても問題は解決しませんでしたが、次の回避策で解決しました。

この問題は、戻り値を収集するコードが原因で発生します。マネージ戻り値を無効にすることで問題を回避することが可能です。

  1. システムのプロパティに移動します(Win8:WinKey + X、「システム」を選択、Win7:コンピュータから「プロパティ」を開きます)
  2. 高度なシステム設定
  3. 環境変数…
  4. [新規]をクリックして追加します
    • 名前:VSDebug_DisableManagedReturnValue
    • 値:1

ソース: https://connect.Microsoft.com/VisualStudio/feedback/details/819552/visual-studio-debugger-throws-accessviolationexception

5
craig

http://veriworld.verivox.ads/docs/DOC-6011?et=watches.email.document_comment#comment-4629

場合によっては、VS/.netフレームワークにメモリの踏みつけの問題があるようです。誰かが何かが壊れたと言うとき、人々が「それはできません」と言うのをやめて欲しいです。

3
fred

この問題は確認できました。これは、自分の商用アプリと共に配布される小さな(非常に簡単な)WinFormsプログラムで発生します。以前のバージョンのVSでは、同じマシンで実行されているものも含めて、VS2005に戻ることはありません。 VS2013でのみ発生します。私のバージョンのVSには、VS自体にインストールされているもの以外のサードパーティのアドインはありません。 「Main()」内のすべてのコードがコメント化されている場合でも問題が発生します。再起動して、ウイルスチェッカー、ファイアウォールなどを無効にしてみました。NETのどのバージョンもアプリのターゲット(2.0、3.5、4.0など)に違いはありません。これは頻繁に発生しますが、ランダムに発生します。うまくいくこともあれば、うまくいかないこともあります。図を行きます。

1
Larry

問題を引き起こす可能性があるように見えるものは何もありません。

例外のブレークを有効にしてみましたか?これにより、例外が発生したときにコードが一時停止します。

enter image description here

1
Gerhard Powell

私の場合、そのようなVSの動作はComodo Firewallが原因でした。

解決策は、VSプロジェクトフォルダをComodo HIPS除外リストに追加することです(HIPSがオフになっていても!)。

これが関連スレッドのComodoフォーラムです: https://forums.comodo.com/empty-t98149.0.html

1
Dmitriy Bykov