I'm having an issue with a C# application which can, at random times, crash without warning or meaningful information. The same data can be put through the application, but it doesn't crash at the same time, it doesn't even crash sometimes.
I've used WinDbg to get some information about the exception. There is a NullReferenceException
being thrown along with an Access Violation
error.
Using SOSEX, I've got a stack using !mk
. I've got a stack with the following at the top:
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)
The lines starting with [WARNING: Multiple managed methods at this address]
seem particularly worrying - what does this mean?
Looking bottom up through the stack, it all looks ok up until this point. Then a random method call to IEnumerable.FirstOrDefault
throws it off. The VersionedSettings.GetSetting(...)
method makes no such calls. This is why I'm left a little confused.
EDIT: I've run !verifyheap
in WinDbg and the output was "No heap corruption detected.". My knowledge of WinDbg is limited so I'm not sure how accurate this command is but I thought it was worth adding.
Does anybody know what is going on?