Резюме:
Я периодически получаю ошибку .NET Fatal Execution Engine в приложении, которое я не могу отлаживать. В появившемся диалоговом окне предлагается закрыть программу или отправить информацию об ошибке Microsoft. Я попытался просмотреть более подробную информацию, но я не знаю, как ее использовать.
Ошибка:
Ошибка видна в средстве просмотра событий в разделе "Приложения" и выглядит следующим образом:
.NET Runtime версии 2.0.50727.3607 - Ошибка машинного сбоя (7A09795E) (80131506)
Компьютер под управлением Windows XP Professional SP 3. (Intel Core2Quad Q6600 2.4 ГГц с 2.0 ГБ ОЗУ). Другие .NET-проекты, которые не имеют многопоточной загрузки (см. ниже), выглядят просто отлично.
Применение:
Приложение написано на С#/.NET 3.5 с использованием VS2008 и установлено через проект установки.
Приложение является многопоточным и загружает данные с нескольких веб-серверов с помощью System.Net.HttpWebRequest
и его методов. Я решил, что ошибка .NET имеет какое-то отношение к потоковой или HttpWebRequest, но мне не удалось приблизиться, поскольку эта ошибка кажется невозможной для отладки.
Я пытался обработать ошибки на многих уровнях, в том числе следующие в Program.cs:
// handle UI thread exceptions
Application.ThreadException += Application_ThreadException;
// handle non-UI thread exceptions
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// force all windows forms errors to go through our handler
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Дополнительные заметки и то, что я пробовал...
- Установил Visual Studio 2008 на целевой машине и попробовал работать в режиме отладки, но ошибка все еще происходит, без намека на то, где в исходном коде это произошло.
- При запуске программы из установленной версии (Release) ошибка происходит чаще, обычно в течение нескольких минут после запуска приложения. При запуске программы в режиме отладки внутри VS2008 она может работать в течение нескольких часов или дней, прежде чем генерировать ошибку.
- Переустановил .NET 3.5 и удостоверился, что все обновления применяются.
- Сбой случайных объектов ячейки в расстройстве.
- Переписанные части кода, которые занимаются потоковой загрузкой и загрузкой при попытках ловить и записывать исключения, хотя регистрация, похоже, усугубляет проблему (и никогда не предоставляла никаких данных).
Вопрос:
Какие шаги можно предпринять для устранения неполадок или отладки этой ошибки? Дампы памяти и т.д., Похоже, являются следующим шагом, но я не имею опыта их интерпретации. Возможно, есть что-то еще, что я могу сделать в коде, чтобы попытаться поймать ошибки... Было бы неплохо, если бы "Fatal Execution Engine Error" была более информативной, но поиск в Интернете только сказал мне, что это общая ошибка для многих Элементы, связанные с .NET.