Background: I am working on a WinForm based .NET 4.0 desktop application that has few threads and timers and uses some GDI processing for user controls. During
You mention using threads - since each thread gets its own stack it could be that the default stack size is being exceeded at some point causing the exception which is then trapped by the .NET runtime. What kind of work are you doing in the threads (recursion, lots of stack variables, etc)?
I believe default thread stack size is set at 1MB - try setting the stack size to 4MB in the thread constructor and see if the error persists.
clr.dll!LogHelp_TerminateOnAssert+0x58f68
The large number (+58f68) indicates that the actual method in clr.dll is far away from LogHelp_TerminateOnAssert(). You should probably fix the symbols and try again in order to get the correct call stack. You can then find out what the real method is.
It's not LogHelp_TerminateOnAssert(), so it's useless to find out what LogHelp_TerminateOnAssert() does.
To fix the symbols: in Process Explorer, go to Options/Configure Symbols
, then enter
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
where c:\symbols
is the path where you want to store the downloaded files.