Как отладить w3wp clr.ошибка dll
У моего клиента есть ASP.NET приложение установлено на двух производственных серверах (сбалансировано с NLB, но это не имеет значения). Оба сервера аварийно завершают работу каждые 3-4 часа со следующей ошибкой просмотра событий:
имя приложения Faulting: w3wp.exe, версия: 7.5.7601.17514, отметка времени: 0x4ce7afa2
Имя модуля сбоя: clr.dll, версия: 4.0.30319.18034, отметка времени: 0x50b5a783
Код исключения: 0xc00000fd смещение ошибки: 0x000000000001a840
Идентификатор процесса сбоя: 0xd50
Время начала работы приложения: 0x01ce97fe076d27b4
Путь к приложению ошибок: c:windowssystem32inetsrvw3wp - ... exe
Путь модуля неисправности: C:WindowsMicrosoft.NETFramework64v4.0.30319clr.dll идентификатор отчета: e0c90a5f-0455-11e3-8f0e-005056891553
Я понятия не имею, как отлаживать или с чего начать. Когда произойдет сбой, использование процессора сервера перейдет на 100% и останется там. Процесс по вине процесса w3wp.исполняемый. Я даже не уверен, генерирует ли мой код ошибку или нет. Это IIS 7.5. Любые указатели будут очень признательны.
4 ответов
похоже, у вас есть исключение StackOverflow, которое вызвано неограниченной рекурсией (функция, неоднократно вызывающая себя и т. д.). Это не может быть поймано обычным блоком try/catch. Вы можете отслеживать проблему с помощью DebugDiag и WinDbg.
DebugDiag можно настроить для создания аварийного дампа при возникновении исключения StackOverflowException. Скачать https://www.microsoft.com/en-us/download/details.aspx?id=49924.
- откройте DebugDiag и нажмите Добавить правило.
- "Crash"уже должен быть выбран. нажимать далее.
- выберите "определенный пул веб-приложений IIS" и нажмите кнопку Далее.
- выберите пул приложений, и нажмите кнопку Далее.
- вы должны быть в окне Дополнительные настройки. Щелкните исключения в разделе Дополнительные параметры.
- Нажмите Кнопку Добавить Исключение и выберите переполнение стека с типом действия Full Userdump
- нажмите OK и сохраните и закройте.
В следующий раз, когда StackOverflowException происходит, у вас будет аварийный дамп. Теперь нужно интерпретировать файл дампа.
инструменты отладки для Windows являются частью Windows SDK и могут быть загружены по адресуhttp://msdn.microsoft.com/en-US/windows/hardware/gg463009/.
- чтобы использовать WinDbg, вам нужно получить файлы символов. загрузите файлы символов и положил их в локальную папку.
- откройте WinDbg. В меню Файл выберите пункт путь к файлу символов.
- в поле путь символа в документации указано ввести следующую команду:
SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols
, однако я просто положил в локальную папку для символов, и это сработало нормально. - выйдите и снова откройте WinDbg, откройте аварийный дамп и найдите файл дампа, который был создан DebugDiag.
- в командной строке введите
.loadby sos clr
- теперь типа
!CLRStack
в результатах должно быть ясно, в чем проблема (вы, вероятно, увидите кучу строк, показывающих функцию(ы), которая неоднократно вызывалась).
некоторое дополнение к вышеуказанному ответу. Разработка расширений Explorer, который получил ошибку при входе пользователя. Поэтому для пользователя он выглядит "мигающим экраном" (в то время как проводник пытается запустить и сбой, а затем перезапустить и т. д.). Вошел в систему под другой учетной записью пользователя, установленной DebugDiag и WinDbg. Я использую Windows 8.1 с .Net 4.0 со всеми последними обновлениями на сегодня (13 января 2014) Пробовал загрузить несколько символов локально, но WinDbg не может загрузить clr.pdb из-за неправильного signaure.
решил его с помощью символов онлайн - используйте " SRV*http://msdl.microsoft.com/download/symbols " как путь символов.
другая причина может "бесконечно рекурсивно функционировать". Когда происходит infitine петли окна пытаются avoidence тупик и сопутствующие отключить пул приложений.
Я встретил тот же вопрос сегодня. У меня есть рекурсивная функция, которая перечисляет parentproject-sub project. Один проект устанавливается сам Родительский проект, и когда рекузивная функция try перечисляет все Родительский проект, происходит бесконечный цикл.
Я смог проверить средство просмотра событий - > Журналы Windows - > Система и найти
пул приложений "DankAppPool" автоматически отключается из-за ряд сбоев в процессе (процессах), обслуживающих этот пул приложений.
ниже:
процесс, обслуживающий пул приложений DankAppPool получил смертельный ошибка связи со Службой активации процесса Windows. Этот идентификатор процесса был '5704'. Поле данных содержит номер ошибки.
и:
служба QueueMonitor неожиданно завершилась. Он сделал это 32 время (ы). Следующее корректирующее действие будет предпринято через 60000 миллисекунды: перезапустите службу.
по крайней мере, служба QueueMonitor-это место для начала.