none
「CLRランタイムエラー」について RRS feed

  • 質問

  • 開発環境: Win7  VS2010  C#   .NetFrameWork4.0

    アプリ実行中で、たまに CLRランタイムエラー が発生します。 このエラーが発生すると、アプリが強制に終了され、MSに情報データをフィードバックする画面が出てきます。 深刻的ですね。 昨日から、「Windbg」というMSのデバッグツールを使ってデバッグして、先やっとこのエラーが発生しました。 Windbgでキャッチしたエラー内容はこれです。

    (c40.c44): Access violation - code c0000005 (first chance)
    First chance exceptions are reported before any exception handling.
    This exception may be expected and handled.
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll -
    eax=02072628 ebx=0302963c ecx=00000000 edx=00000001 esi=03029490 edi=03029230
    eip=69fdcf07 esp=002cd87c ebp=002cd89c iopl=0         nv up ei pl zr na pe nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00210246
    clr!StrongNameSignatureVerification+0xbd00:
    69fdcf07 f70100000080    test    dword ptr [ecx],80000000h ds:0023:00000000=????????

    このエラー内容はあまりわからなくて、これからどうしていくかがわかりません。

    皆さん、教えていただきたいです。


    cyo

    2013年4月26日 2:49

すべての返信

  • AK46.5 さん、投稿ありがとうございます。
    フォーラム オペレーターの星 睦美です。

    CLR ランタイム エラーが発生した際のアプリケーション イベントログの内容も質問に追加していただくと、
    コミュニティの回答者にエラーの内容が分かりやすいのではないかと思います。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2013年4月26日 5:12
  • 返事ありがとうございます。  エラー発生時のアプリイベントログは二つがあります。

    1:

    エラー 2013/04/26 13:07:33 .NET Runtime 1026 なし

    ログの名前:         Application
    ソース:           .NET Runtime
    日付:            2013/04/26 13:07:33
    イベント ID:       1026
    タスクのカテゴリ:      なし
    レベル:           エラー
    キーワード:         クラシック
    ユーザー:          N/A
    コンピューター:       ZBFeild-PC
    説明:
    アプリケーション:WM_NC.exe
    フレームワークのバージョン: v4.0.30319
    説明: ハンドルされない例外のため、プロセスが中止されました。
    例外情報: System.AccessViolationException
    スタック:
       場所 System.Windows.Forms.UnsafeNativeMethods.SetFocus(System.Runtime.InteropServices.HandleRef)
       場所 System.Windows.Forms.ContainerControl.FocusActiveControlInternal()
       場所 System.Windows.Forms.Form.set_Active(Boolean)
       場所 System.Windows.Forms.Form.WmActivate(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Form.WndProc(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)
       場所 System.Windows.Forms.SafeNativeMethods.ShowWindow(System.Runtime.InteropServices.HandleRef, Int32)
       場所 System.Windows.Forms.Control.SetVisibleCore(Boolean)
       場所 System.Windows.Forms.Form.SetVisibleCore(Boolean)
       場所 System.Windows.Forms.Control.set_Visible(Boolean)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application.Run(System.Windows.Forms.Form)
       場所 WM_NC.Program.Main()

    イベント XML:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name=".NET Runtime" />
        <EventID Qualifiers="0">1026</EventID>
        <Level>2</Level>
        <Task>0</Task>
        <Keywords>0x80000000000000</Keywords>
        <TimeCreated SystemTime="2013-04-26T04:07:33.000000000Z" />
        <EventRecordID>5060</EventRecordID>
        <Channel>Application</Channel>
        <Computer>ZBFeild-PC</Computer>
        <Security />
      </System>
      <EventData>
        <Data>アプリケーション:WM_NC.exe
    フレームワークのバージョン: v4.0.30319
    説明: ハンドルされない例外のため、プロセスが中止されました。
    例外情報: System.AccessViolationException
    スタック:
       場所 System.Windows.Forms.UnsafeNativeMethods.SetFocus(System.Runtime.InteropServices.HandleRef)
       場所 System.Windows.Forms.ContainerControl.FocusActiveControlInternal()
       場所 System.Windows.Forms.Form.set_Active(Boolean)
       場所 System.Windows.Forms.Form.WmActivate(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Form.WndProc(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)
       場所 System.Windows.Forms.SafeNativeMethods.ShowWindow(System.Runtime.InteropServices.HandleRef, Int32)
       場所 System.Windows.Forms.Control.SetVisibleCore(Boolean)
       場所 System.Windows.Forms.Form.SetVisibleCore(Boolean)
       場所 System.Windows.Forms.Control.set_Visible(Boolean)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)
       場所 System.Windows.Forms.Application.Run(System.Windows.Forms.Form)
       場所 WM_NC.Program.Main()
    </Data>
      </EventData>
    </Event>

    2:

    エラー 2013/04/26 13:07:34 Application Error 1000 (100)

    ログの名前:         Application
    ソース:           Application Error
    日付:            2013/04/26 13:07:34
    イベント ID:       1000
    タスクのカテゴリ:      (100)
    レベル:           エラー
    キーワード:         クラシック
    ユーザー:          N/A
    コンピューター:       ZBFeild-PC
    説明:
    障害が発生しているアプリケーション名: WM_NC.exe、バージョン: 7.1.0.0、タイム スタンプ: 0x5179fd36
    障害が発生しているモジュール名: msvcrt.dll、バージョン: 7.0.7601.17744、タイム スタンプ: 0x4eeaf722
    例外コード: 0xc0000005
    障害オフセット: 0x0000983e
    障害が発生しているプロセス ID: 0x44c
    障害が発生しているアプリケーションの開始時刻: 0x01ce423393593927
    障害が発生しているアプリケーション パス: E:\WM_NC0417\WM_NC\bin\Release\WM_NC.exe
    障害が発生しているモジュール パス: C:\Windows\system32\msvcrt.dll
    レポート ID: d26f9531-ae26-11e2-8260-94de8061596e
    イベント XML:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Application Error" />
        <EventID Qualifiers="0">1000</EventID>
        <Level>2</Level>
        <Task>100</Task>
        <Keywords>0x80000000000000</Keywords>
        <TimeCreated SystemTime="2013-04-26T04:07:34.000000000Z" />
        <EventRecordID>5061</EventRecordID>
        <Channel>Application</Channel>
        <Computer>ZBFeild-PC</Computer>
        <Security />
      </System>
      <EventData>
        <Data>WM_NC.exe</Data>
        <Data>7.1.0.0</Data>
        <Data>5179fd36</Data>
        <Data>msvcrt.dll</Data>
        <Data>7.0.7601.17744</Data>
        <Data>4eeaf722</Data>
        <Data>c0000005</Data>
        <Data>0000983e</Data>
        <Data>44c</Data>
        <Data>01ce423393593927</Data>
        <Data>E:\WM_NC0417\WM_NC\bin\Release\WM_NC.exe</Data>
        <Data>C:\Windows\system32\msvcrt.dll</Data>
        <Data>d26f9531-ae26-11e2-8260-94de8061596e</Data>
      </EventData>
    </Event>

    これからどうやってデバッグするかを是非指導していただきたいです。 よろしくお願いいたします。


    cyo

    2013年4月26日 8:36
  • このエラーは、アプリ起動してから、一回目のデータ処理する時、発生しやすいです。  今の感じでは、一回目の処理がエラーなく実行できたら、この後も発生しないみたいです。

    訳が分からないので、うまく状況を説明できないです。 申し訳ありません。


    cyo

    2013年4月26日 8:43
  • アプリクラッシュレポータファイルを見つかりました。 内容は以下です。

    Version=1
    EventType=APPCRASH
    EventTime=130114228547834514
    ReportType=2
    Consent=1
    UploadTime=130114228548926516
    ReportIdentifier=d26f9532-ae26-11e2-8260-94de8061596e
    IntegratorReportIdentifier=d26f9531-ae26-11e2-8260-94de8061596e
    Response.BucketId=3552272826
    Response.BucketTable=1
    Response.type=4
    Sig[0].Name=アプリケーション名
    Sig[0].Value=WM_NC.exe
    Sig[1].Name=アプリケーションのバージョン
    Sig[1].Value=7.1.0.0
    Sig[2].Name=アプリケーションのタイムスタンプ
    Sig[2].Value=5179fd36
    Sig[3].Name=障害モジュールの名前
    Sig[3].Value=msvcrt.dll
    Sig[4].Name=障害モジュールのバージョン
    Sig[4].Value=7.0.7601.17744
    Sig[5].Name=障害モジュールのタイムスタンプ
    Sig[5].Value=4eeaf722
    Sig[6].Name=例外コード
    Sig[6].Value=c0000005
    Sig[7].Name=例外オフセット
    Sig[7].Value=0000983e
    DynamicSig[1].Name=OS バージョン
    DynamicSig[1].Value=6.1.7601.2.1.0.256.1
    DynamicSig[2].Name=ロケール ID
    DynamicSig[2].Value=1041
    DynamicSig[22].Name=追加情報 1
    DynamicSig[22].Value=0a9e
    DynamicSig[23].Name=追加情報 2
    DynamicSig[23].Value=0a9e372d3b4ad19135b953a78882e789
    DynamicSig[24].Name=追加情報 3
    DynamicSig[24].Value=0a9e
    DynamicSig[25].Name=追加情報 4
    DynamicSig[25].Value=0a9e372d3b4ad19135b953a78882e789
    UI[2]=E:\WM_NC0417\WM_NC\bin\Release\WM_NC.exe
    UI[3]=WM_NC は動作を停止しました
    UI[4]=問題の解決策をオンラインで確認できます。
    UI[5]=オンラインで解決策を確認してプログラムを終了します
    UI[6]=オンラインで解決策を後で確認してプログラムを終了します
    UI[7]=プログラムを終了します
    LoadedModule[0]=E:\WM_NC0417\WM_NC\bin\Release\WM_NC.exe
    LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
    LoadedModule[2]=C:\Windows\SYSTEM32\MSCOREE.DLL
    LoadedModule[3]=C:\Windows\system32\KERNEL32.dll
    LoadedModule[4]=C:\Windows\system32\KERNELBASE.dll
    LoadedModule[5]=C:\Windows\system32\ADVAPI32.dll
    LoadedModule[6]=C:\Windows\system32\msvcrt.dll
    LoadedModule[7]=C:\Windows\SYSTEM32\sechost.dll
    LoadedModule[8]=C:\Windows\system32\RPCRT4.dll
    LoadedModule[9]=C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll
    LoadedModule[10]=C:\Windows\system32\SHLWAPI.dll
    LoadedModule[11]=C:\Windows\system32\GDI32.dll
    LoadedModule[12]=C:\Windows\system32\USER32.dll
    LoadedModule[13]=C:\Windows\system32\LPK.dll
    LoadedModule[14]=C:\Windows\system32\USP10.dll
    LoadedModule[15]=C:\Windows\system32\IMM32.DLL
    LoadedModule[16]=C:\Windows\system32\MSCTF.dll
    LoadedModule[17]=C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
    LoadedModule[18]=C:\Windows\system32\MSVCR100_CLR0400.dll
    LoadedModule[19]=C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\75dbd3e66b6c699711e2c193fd9aef07\mscorlib.ni.dll
    LoadedModule[20]=C:\Windows\system32\ole32.dll
    LoadedModule[21]=C:\Windows\system32\CRYPTBASE.dll
    LoadedModule[22]=C:\Windows\system32\uxtheme.dll
    LoadedModule[23]=C:\Windows\Microsoft.NET\Framework\v4.0.30319\nlssorting.dll
    LoadedModule[24]=C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
    LoadedModule[25]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System\11d5903f09e6c549f04cf23570e2cc5a\System.ni.dll
    LoadedModule[26]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Drawing\7df180c8188116a2fff287070b51c3be\System.Drawing.ni.dll
    LoadedModule[27]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Windows.Forms\eb2df82b35c09208c351d17dd7bebb2c\System.Windows.Forms.ni.dll
    LoadedModule[28]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
    LoadedModule[29]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll
    LoadedModule[30]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Configuration\8875a58c818f07ae0267435df6509287\System.Configuration.ni.dll
    LoadedModule[31]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Xml\e6c3a425fbf0378b1badb5891c81aee9\System.Xml.ni.dll
    LoadedModule[32]=C:\Windows\system32\dwmapi.dll
    LoadedModule[33]=C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_72d273598668a06b\gdiplus.dll
    LoadedModule[34]=C:\Windows\system32\RichEd20.DLL
    LoadedModule[35]=C:\Windows\system32\version.dll
    LoadedModule[36]=C:\Windows\system32\WindowsCodecs.dll
    LoadedModule[37]=C:\Windows\system32\shell32.dll
    LoadedModule[38]=E:\WM_NC0417\WM_NC\bin\Release\asfpgapc2_c.dll
    LoadedModule[39]=C:\Windows\system32\CRYPTSP.dll
    LoadedModule[40]=C:\Windows\system32\rsaenh.dll
    LoadedModule[41]=C:\Windows\system32\RpcRtRemote.dll
    LoadedModule[42]=C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Core\2a1504fcc4e487a6aab50e855972f961\System.Core.ni.dll
    LoadedModule[43]=C:\Windows\assembly\NativeImages_v4.0.30319_32\Microsoft.VisualBas#\189e5b46a9bc675d66f5b4d680963ebe\Microsoft.VisualBasic.ni.dll
    LoadedModule[44]=C:\Windows\system32\CLBCatQ.DLL
    LoadedModule[45]=C:\Windows\system32\OLEAUT32.dll
    LoadedModule[46]=C:\Windows\system32\ime\imejp10\imjptip.dll
    LoadedModule[47]=C:\Windows\system32\OLEACC.dll
    LoadedModule[48]=C:\Windows\system32\imjp10k.dll
    LoadedModule[49]=C:\Windows\system32\ime\shared\imetip.dll
    LoadedModule[50]=C:\Windows\system32\ime\shared\imecfm.dll
    LoadedModule[51]=C:\Windows\system32\ime\imejp10\imjpapi.dll
    LoadedModule[52]=C:\Windows\system32\ime\shared\imjkapi.dll
    LoadedModule[53]=C:\Windows\Microsoft.NET\Framework\v4.0.30319\diasymreader.dll
    State[0].Key=Transport.DoneStage1
    State[0].Value=1
    State[1].Key=DataRequest
    State[1].Value=Bucket=-742694470/nBucketTable=1/nResponse=1/n
    FriendlyEventName=動作が停止しました
    ConsentKey=APPCRASH
    AppName=WM_NC
    AppPath=E:\WM_NC0417\WM_NC\bin\Release\WM_NC.exe


    cyo

    2013年4月26日 8:55
  • 69fdcf07 f70100000080    test    dword ptr [ecx],80000000h ds:0023:00000000=????????

    これはアセンブラのtest命令を実行したときにメモリ上に「アクセス」して値が存在しなかったため失敗(violation)となっています。

    (ですが、C#では直接メモリを扱うことがないため、このアプリの実装担当者がメモリの扱いを誤ったわけではないと思います。)

    とりあえず ~*kb を入力してみてください。すべてのスレッドのスタックトレースが見れます。

    ダンプ解析するときは、ソースを見ながら解析した方が原因究明が早くなります。

    ソースをお持ちであれば、ソースも記載してもらえますか?

    2013年4月26日 15:28
  • AZUMALさん、ありがとうございます。

    Windbgのメッセージは分かりませんが、確かメモリの値がおかしくなっていると思います。 VS2010でデバッグ実行する場合、tryできない「ランタイムエラー」が発生しているって、止まった行が薄緑色で表示します。 この状態で、Form1中のコンポーネントの状態を見に行ったら、全部「最適化されている、参照できない」という表示になっています。 staticで宣言したクラス中の変数も一部”?”になってしまいます。

    「~*kb」というコマンドはWindbgのコマンドですね、とりあえずWindbgで入れてみました。 たくさんの情報が出てきました、これがすべてのスレッドのスタックトレースでしょうね、でも意味分かりません。  これをどう見たらいいですか? どこかに説明がありますか? 教えていただきたいです。

    「ダンプ解析」って、レベル低い私にはちょっと難しいです。 まず、ダンプどうやって取れますか? いつ取ったほうがいいですかね。

    プログラムのソースとても長いです。どの部分を記載していいのかが分からないです。申し訳ありません。


    cyo



    • 編集済み AK46.5 2013年5月1日 7:19
    2013年5月1日 7:18
  • Visual Studioでデバッグできるのであれば、Windbgを使う必要はないと思いますよ。

    確か以前私からVSでデバッグできないときの代替案としてWindbgを提案しましたが、あくまでVSを使うことができないときに使用するものです。

    あと私にとってもダンプ解析は難しいです。ダンプ解析をするときは本を読みながら地道にやります。

    (日本語の)Webサイトでは情報がすくないので、必要であれば書籍を購入してみてください。

    一応Windbgの参考書籍をあげておきます。

    「Windowsダンプの極意 エラーが発生したら、まずダンプ解析!  著:上原 祥市」

    今回の現象ですが、VS上で変数の内容が破棄されてしまった後参照しようとすると「?」になったような気がします。

    そのForm1オブジェクトがどこかのタイミングでDisposeされていませんか?

    Form1.Designer.csに記述されているDisposeメソッドにブレークポイント置いてみると、どこかで呼ばれているか確認できると思います。

    2013年5月1日 14:14
  • 2013年4月26日 8:36 のトレースを見ると、Application.Run から Form の Visible クラスを変更しようとしているところでエラーが発生しています。このことは、2013年4月26日 8:43 の投稿にある、「アプリ起動してから、一回目のデータ処理する時、発生しやすいです。」と一致しているでしょうか。あるいは、一回目のデータ処理をするのは、いつでしょう?どのようなタイミングで、一回目のデータ処理をするようにコーディングしているでしょうか。また、その時に Form.Visible を設定するような処理はあるでしょうか。

    Jitta@わんくま同盟

    2013年5月5日 13:20