私は、最新の更新プログラムを適用した Visual Studio 2012 と、最新の更新プログラムを適用した Win7 上の最新の ReSharper を実行しています。Entity Framework 6.1 を使用する .NET 4.5 x64 C# Topshelf 3.1.122 ラップ プロジェクトがあります。デバッガーが接続されているかどうかに関係なく、ウィンドウを閉じて実行中のプログラムを終了すると、vshost.exe が動作を停止し、強制終了する必要があります。これには目に見える効果はないようです。それはただ迷惑です。この動作は私のマシンでのみ発生し、他の開発者では発生しません。赤色の停止ボタンでデバッグ セッションを停止すると、クラッシュは発生しません。何が原因でしょうか?
問題の署名: 問題イベント名: BEX64 アプリケーション名: REDACTED.vshost.exe アプリケーション バージョン: 11.0.50727.1
アプリケーション タイムスタンプ: 5011d445 障害モジュール名: ntdll.dll 障害モジュール バージョン: 6.1.7601.18247 障害モジュール タイムスタンプ: 521eaf24
例外オフセット: 0000000000072c4a 例外コード:C000000D
例外データ:00000000000000OSバージョン:6.1.7601.2.1.0.256.1
ロケールID:1033追加情報
これは参照用の Topshelf ラッパー コードです。
private static void Main()
{
HostFactory.Run(
x =>
{
x.Service<Foo>(s =>
{
s.ConstructUsing(name => new Foo());
s.WhenStarted(svc => svc.Start());
s.WhenStopped(svc => svc.Stop());
s.WhenShutdown(svc => svc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription(ServiceInfo.Description);
x.SetDisplayName(ServiceInfo.DisplayName);
x.SetServiceName(ServiceInfo.ServiceName);
x.EnableShutdown();
});
}
Main の末尾または svc.Stop メソッドの先頭にブレーク ポイントを配置すると、ウィンドウを閉じてもデバッガはブレークせず、vshost.exe はすぐにクラッシュします。とにかく、これをどのように進めることができるかを見ることができません。
更新: WinDbg を使用して vshost プロセスにアタッチし、最終的に実際の例外を取得しました:
ntdll!DbgBreakPoint:
00000000`76ef0590 cc int 3
0:022> g
ModLoad: 000007fe`f7fe0000 000007fe`f7fee000 C:\Windows\system32\wbem\wbemprox.dll
ModLoad: 000007fe`f81f0000 000007fe`f826d000 C:\Windows\system32\wbemcomn2.dll
(3c70.22e8): Unknown exception - code c000000d (first chance)
(3c70.22e8): Unknown exception - code c000000d (!!! second chance !!!)
ntdll!RtlIsDosDeviceName_U+0x1922a:
00000000`76f12c4a 4c8b1d87f70b00 mov r11,qword ptr [ntdll!NlsAnsiCodePage+0x13e (00000000`76fd23d8)] ds:00000000`76fd23d8=0000000000000000