APPCRASH StackOverflowException clr.dll c00000fd

11,261

Solution 1

*****UPDATE WITH SOLUTION WORKAROUND *****

I have given up trying to handle this exception within .Net. I found an effective workaround. This workaround applies to Windows, specifically any version with an Event Viewer.

Workaround Instructions.

1) Open control panel->Admin Tools->Event Viewer->Windows Logs->Applications.

2) Select the offending event. In my case, it is state ERROR, and matches the example that you see above.

3) On the right hand side click "Attach Task to This Event".

4) Complete the wizard. In my case, I restart my application.

5) Save the task.

6) Now switch over to Task Scheduler and find the task. Click Properties. Click through the tabs and configure the Task as you see fit.

Solution 2

I suggests to use ProcDump, it can be configured to generate a crash dump when the StackOverflowException occurs.

procdump -accepteula -e 1 -f C00000FD.STACK_OVERFLOW -g -ma <PID> <OUTPUT PATH>

Then analyze the dump file using one of this tools Visual studio, windbg, debugdiag, clrmd.

Share:
11,261
sapbucket
Author by

sapbucket

C# .Net

Updated on July 04, 2022

Comments

  • sapbucket
    sapbucket almost 2 years

    I am running a .Net console application that executes 24 hrs a day. It has a bug that occurs about once every 6 days.

    I would like your assistance to fix this bug. First I will provide some background, and then I will provide the exception messaging.

    Unfortunately I do not have steps to reproduce. You will see why as you read on.

    First some background:

    I have robust exception handling in my code (or so I thought). For example I have a try...catch block in my Main() method that captures any unhandled exceptions and if they are FATAL it restarts the underlying task. It works great for any exceptions generated from my own code.

    I cannot explain why the below exception isn't handled in my code. My best guess is that clr.dll exceptions do not get caught within the managed stack. And if that is the case, I do not know how to generate a stack trace. I don't even know where to begin to fix this.

    The process I am running is using the following versions and modules:

    • C# .Net Framework 4.6.1
    • Console App project type
    • System.Net.WebClient
    • log4net
    • Windows 7 64-bit

    At the time of the crash I checked RAM and HDD: both have plenty of free space.

    About the code I'm executing. The process is a continous loop that downloads data from a website and saves it to a text file. If there is an error, it is logged using log4net.

    The basic loop is this:

     for (int i = 0; i < 5; i++)
                {
                    try
                    {
                        return new WebClient().DownloadString(url);
                    }
                    catch 
                    {
                        Thread.Sleep(500); // slow it down.
                    }
                }
    

    The following is the only message that displays in my console window when the exception occurs: (no stack trace displayed)

    Process is terminated due to StackOverflowException
    

    My console application completely freezes up and a dialog window pops up with the following information (closing this dialog also terminates my application)

     Problem signature:
      Problem Event Name:   APPCRASH
      Application Name: foo.goo.BatchExecutor.exe
      Application Version:  1.0.0.0
      Application Timestamp:    5a50f3eb
      Fault Module Name:    clr.dll
      Fault Module Version: 4.7.2117.0
      Fault Module Timestamp:   59cf5105
      Exception Code:   c00000fd
      Exception Offset: 0002429f
      OS Version:   6.1.7601.2.1.0.256.48
      Locale ID:    1033
      Additional Information 1: 28e8
      Additional Information 2: 28e8aacd8abfe32876bc8363e8e5c526
      Additional Information 3: 6916
      Additional Information 4: 6916665ca52ff482d854f190abcf46b2
    

    The only other place I could find information about the crash is in the Windows Event Log:

    Log Name:      Application
    Source:        Application Error
    Date:          1/23/2018 5:51:46 PM
    Event ID:      1000
    Task Category: (100)
    Level:         Error
    Keywords:      Classic
    User:          N/A
    Computer:      FOOGOO
    Description:
    Faulting application name: foo.goo.BatchExecutor.exe, version: 1.0.0.0, time stamp: 0x5a50f3eb
    Faulting module name: clr.dll, version: 4.7.2117.0, time stamp: 0x59cf5105
    Exception code: 0xc00000fd
    Fault offset: 0x0002429f
    Faulting process id: 0x1e00
    Faulting application start time: 0x01d39169354e41a7
    Faulting application path: C:\Users\Owner\Desktop\SHARED\foo.goo.BatchExecutor\foo.goo.BatchExecutor.exe
    Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
    Report Id: 21b9b2a4-00a9-11e8-9f6c-94c69110a719
    Event 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="2018-01-24T01:51:46.000000000Z" />
        <EventRecordID>1852</EventRecordID>
        <Channel>Application</Channel>
        <Computer>FOOGOO</Computer>
        <Security />
      </System>
      <EventData>
        <Data>foo.goo.BatchExecutor.exe</Data>
        <Data>1.0.0.0</Data>
        <Data>5a50f3eb</Data>
        <Data>clr.dll</Data>
        <Data>4.7.2117.0</Data>
        <Data>59cf5105</Data>
        <Data>c00000fd</Data>
        <Data>0002429f</Data>
        <Data>1e00</Data>
        <Data>01d39169354e41a7</Data>
        <Data>C:\Users\Owner\Desktop\SHARED\foo.goo.BatchExecutor\foo.goo.BatchExecutor.exe</Data>
        <Data>C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll</Data>
        <Data>21b9b2a4-00a9-11e8-9f6c-94c69110a719</Data>
      </EventData>
    </Event>
    

    *****UPDATE WITH SOLUTION WORKAROUND *****

    I have given up trying to handle this exception within .Net. I found an effective workaround. This workaround applies to Windows, specifically any version with an Event Viewer.

    Workaround Instructions.

    1) Open control panel->Admin Tools->Event Viewer->Windows Logs->Applications.

    2) Select the offending event. In my case, it is state ERROR, and matches the example that you see above.

    3) On the right hand side click "Attach Task to This Event".

    4) Complete the wizard. In my case, I restart my application.

    5) Save the task.

    6) Now switch over to Task Scheduler and find the task. Click Properties. Click through the tabs and configure the Task as you see fit.