Thread was being aborted
От: MadHuman Россия  
Дата: 22.02.18 06:27
Оценка: 64 (1)
Всем привет!

Иногда (раз в месяц, но в последнее время пару дней подряд было), в сервисном процессе .Net возникает ошибка ThreadAbortException (сообщение Thread was being aborted). Судя по описанию в MSDN — такая ошибка возможна если потоку явно сказали Abort, но в нашем коде такого нет (используемые библиотеки также можно исключить). Почему тогда возникает??? очень странно.
Ещё из деталей: во всех случаях, ошибка случалась в разных местах нашего кода, который выполнялся из Task-и. Также в такие моменты много Task могло быть запущено и высокая CPU нагрузка. Но если таким образом оборванную работу затем перезапустить, то ок, то есть дело не в самой выполняемой таской процедуре.
В стэк трэйсе ничего интересного (наш код), который вдруг в произвольном месте прерывается с такой ошибкой.
Хостом является IIS, и это происходит при старте веб-приложения, запускаются таски чтоб асинхронно выполнялась определённая инициализация, но не нужная сразу. В течении последующей работы такого небывает.
Это точно не выгрузка домена (тк домен только поднялся и остальные стартовавшие таски продолжают работу).
Это точно не в процессе обработки хттп-запроса, т.е. не из-за возможных редиректов.

Кто-нибудь сталкивался с похожей проблемой? Куда копать?...

upd — ответ нашёлся
дело оказалось в следующем.
до запуска плановой асинхронной инициализации, успевал прилетать хттп-реквест и инициализация шла синхронно в потоке этого реквеста.
запрос был на асинхронный контроллер (mvc3), который имел аттрибут AsyncTimeout.
тк инициализация шла долго, то таймаут проходил и asp.net видимо абортил рабочий поток реквеста (о чем в евент-логе виндовс и было сообщение секунда в секунду совпавшее с уже нашим логом об ошибке).
Отредактировано 22.02.2018 14:57 MadHuman . Предыдущая версия . Еще …
Отредактировано 22.02.2018 8:33 MadHuman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.