C# アプリケーションに問題があり、警告や意味のある情報なしでランダムにクラッシュする可能性があります。同じデータをアプリケーションに渡すことができますが、同時にクラッシュすることはなく、時々クラッシュすることさえありません。
WinDbg を使用して、例外に関する情報を取得しました。NullReferenceException
エラーとともにスローされることがありAccess Violation
ます。
SOSEXを使用して、を使用してスタックを取得しました!mk
。上部に次のスタックがあります。
03:M 000000001aefd4f8 000007fef94cfa70 System.Runtime.Remoting.SoapServices.GetXmlTypeForInteropType(System.Type, System.String ByRef, System.String ByRef)(+0x0 IL,+0xd9e9a0 Native)
04:M 000000001aefd4f8 000007fef94cfa6f System.Runtime.Remoting.Metadata.RemotingTypeCachedData.get_QualifiedTypeName()(+0x0 IL,+0xd9ea5f Native)
05:U 000000001aefd500 000007fef991339b clr!CopyValueClassUnchecked+0xb8
06:U 000000001aefd550 000007fef9902491 clr!JIT_BoxFastMPIGT__PatchTLSLabel+0x51
[WARNING: Multiple managed methods at this address]07:M 000000001aefd580 000007fef87350ad System.Collections.Generic.List`1[[System.__Canon, mscorlib]].System.Collections.Generic.IEnumerable<T>.GetEnumerator()(+0x0 IL,+0xff47bced Native)
[WARNING: Multiple managed methods at this address]08:M 000000001aefd5d0 000007fef6d60e4f System.Linq.Enumerable.FirstOrDefault[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)(+0x22 IL,+0x5f Native)
09:M 000000001aefd630 000007fe9a7885d8 Settings.VersionedSettings.GetSetting(System.DateTimeOffset, System.Guid)(+0x4e IL,+0x258 Native)
で始まる行[WARNING: Multiple managed methods at this address]
は特に気になります-これはどういう意味ですか?
スタックをボトムアップで見ると、この時点まではすべて問題ないように見えます。次に、へのランダムなメソッド呼び出しがそれをIEnumerable.FirstOrDefault
スローします。メソッドはそのVersionedSettings.GetSetting(...)
ような呼び出しを行いません。これが、私が少し混乱している理由です。
編集: !verifyheap
WinDbg で実行したところ、「ヒープの破損が検出されませんでした」という出力が表示されました。私の WinDbg に関する知識は限られているため、このコマンドがどれほど正確かはわかりませんが、追加する価値があると思いました。
何が起こっているのか誰か知っていますか?