Вы больше не можете поймать System.StackOverflowException
Начиная с .Net 2.0 их можно поймать только при следующих обстоятельствах.
- CLR запускается в размещенной среде, где хост специально разрешает обработку исключений StackOverflow.
- Исключение переполнения стека возникает из-за пользовательского кода, а не из-за фактической ситуации переполнения стека (ссылка)
Хотя в сообщении об ошибке говорится, что она возникла в ntdll.dll, скорее всего, она вызвана вашим кодом.
Моими первыми шагами было бы добавить или включить максимальное ведение журнала отладки в рабочей среде, чтобы вы могли попытаться сузить круг, где это происходит, и обстоятельства.
Второй идентификатор начинает отладку (подключение отладчика) и тщательно изучает этот класс метода, пока не найдет его. Скорее всего, это связано с некоторой рекурсией, это первое место, где ищет id.
Дополнительные ресурсы и ссылки
C# перехватывает исключение переполнения стека
Как найти источник StackOverflowException в моем приложение
Как отлаживать System.StackOverflowException без ссылки на исходный код?
Как предотвратить и/или обработать исключение StackOverflowException?
Как отладить исключение stackoverflowexception в .NET
Устранение неполадок с исключениями: System.StackOverflowException
Класс StackOverflowException
В .NET Framework 1.0 и 1.1 можно было перехватывать объект StackOverflowException (например, для восстановления после неограниченной рекурсии). Начиная с .NET Framework 2.0, вы не можете перехватить объект StackOverflowException с помощью блока try/catch, и соответствующий процесс завершается по умолчанию. Следовательно, вы должны написать свой код для обнаружения и предотвращения переполнения стека. Например, если ваше приложение зависит от рекурсии, используйте счетчик или условие состояния, чтобы завершить рекурсивный цикл.
person
TheGeneral
schedule
25.10.2018