powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / KB4103472 & TaskCanceledException
12 сообщений из 12, страница 1 из 1
KB4103472 & TaskCanceledException
    #39646467
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая ситуация: в среду вечером на рабочий комп по windows update прилетел этот KB (Предварительная версия пакета исправлений для .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 в Windows 7 и Server 2008 R2 для 64-разрядных систем (KB4103472), 2018-05). Я всю среду с утра возился с одним приложением (WPF, target framework=4.5), и всё было в порядке. Прихожу в четверг с утра на работу, перезагружаю комп, и это приложение, которое день назад вело себя абсолютно нормально и предсказуемо, при выходе стало выбрасывать TaskCanceledException:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
System.Threading.Tasks.TaskCanceledException: Отменена задача.
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   в System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancelltionToken, TimeSpan timeout)
   в MS.Internal.WeakEventTable.OnShutDown()
   в MS.Internal.WeakEventTable.WeakEventTableShutDownListener.OnShutDown(Object target, Object sender, EventArgs e)
   в MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)

- это полный стектрейс, предоставляемый одним прикладным методом, который рекурсивно вытаскивает стектрейсы от InnerException, TargetInvocationException, AggregateException, итд. Т.е. то, что приведено выше - это всё, что есть. Вчера еще день был посвящен на выискивание причины этого TaskCanceledException. Под вечер вспомнил, что в среду ставился какой-то апдейт, посмотрел - ага, для .Net Framework. Снес этот апдейт - всё снова заработало нормально. Никто с аналогичной ситуаацией не сталкивался?
P.S. Причем к моменту вылета этого приложение уже наполовину завершено - например, используемый NLog уже успел закрыть все свои логгеры (используется 2 target'а: console и file), и вышеприведенное - от обычного Console.WriteLine.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Вполне может быть что KB ни при чем и просто не освобождаются корректно ресурсы.
А обновление просто "звезды сложило по другому".
- ошибка на экран выходит? Или только в логе?
- если просто запуск и сразу закрыть тоже? Или после некоторого функционала?
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646503
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И этот тоже не читатель...
Сон Веры ПавловныСнес этот апдейт - всё снова заработало нормально.
Petro123и просто не освобождаются корректно ресурсы
Ага, поучите давайте меня корректно освобождать ресурсы.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646508
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныэтот тоже не читатель...есть куча примеров когда апдейт просто вскрывает недостаток кода.

Сон Веры ПавловныАга, поучите давайте меня корректно освобождать ресурсы.профи тоже ошибаются))).
Как пить дать)).
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646510
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Сон Веры Павловныэтот тоже не читатель...есть куча примеров когда апдейт просто вскрывает недостаток кода.
Приложению, про которое выше шла речь, уже лет 5, и за все 5 лет недостаток не вскрывался, а тут вдруг вскрылся, ага.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646512
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
ОК.
Один шанс на 500 что бага в апдейте MS.
На вопросы хотите отвечайте. Хотите нет.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646666
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
преостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются.
Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов.
Найдете нужный таск, поймете природу происходждения ошибки.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646689
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesпреостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются.
Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов.
Найдете нужный таск, поймете природу происходждения ошибки.
Это приложение не использует таски. Вообще. И async-await тоже не использует. Он так сделано, что ему это не нужно. У меня подозрение, что что-то они там нахимичили со слабой привязкой биндингов к INPC (см. вторую снизу строку стектрейса - там фигурирует некий класс WeakEventTable). И да, само приложение в непосредственно слабые сслыки и события не использует - только опосредованно в виде биндингов.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39646701
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныRoman Mejtesпреостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются.
Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов.
Найдете нужный таск, поймете природу происходждения ошибки.
Это приложение не использует таски. Вообще. И async-await тоже не использует. Он так сделано, что ему это не нужно. У меня подозрение, что что-то они там нахимичили со слабой привязкой биндингов к INPC (см. вторую снизу строку стектрейса - там фигурирует некий класс WeakEventTable). И да, само приложение в непосредственно слабые сслыки и события не использует - только опосредованно в виде биндингов.ну если вы их не используйте, это не значит, что в WPF они не используются :)
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39666316
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выяснилось, что я не один такой:
обсуждение на SoF
И разработчики roslyn тоже прошлись по этим граблям.

Вроде как эту штуку можно отключить - но только для фреймворка от 4.7.2 и выше (а фикс действует на все фреймворки - молодцы, чо): https://github.com/Microsoft/dotnet/blob/master/Documentation/compatibility/wpf-AppDomain-shutdown-handling-may-now-call-Dispatcher.Invoke-in-cleanup-of-WeakEvents.md
Пока в ловушку исключений верхнего уровня (исключение ловит именно она, без неё вообще было бы тихо, только студия бы ругалась) встроил следующее:
Код: sql
1.
2.
3.
4.
5.
6.
void PrepareException(Exception error, string source)
{
  if (Application.Current.Dispatcher.HasShutdownFinished && error is TaskCanceledException)
    return;
  ...............
}


Причину ошибки поймать так и не удалось, она практически нелокализуема - встречается в куче проектов (при этом не использующих weak events напрямую), и не ловится даже обрезанием проекта по частям - то вдруг перестает вылетать, то опять начинает.
Посмотрим, что с этим они сделают дальше.
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39666321
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(P.S. причина ошибки, если что - не очищенная WeakEventTable. А Task, который canceled, запускается внутри сборок CLR - т.е. он совсем не мой).
...
Рейтинг: 0 / 0
KB4103472 & TaskCanceledException
    #39719828
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну наконец-то. Не прощло и полгода - управились за 5 месяцев:
Fixes a crash that occurs because a TaskCanceledException can occur during shutdown of some WPF applications. Applications that continue to do work that involve weak event patterns or data binding after Application.Run() returns values are known to be vulnerable to this crash.
https://support.microsoft.com/en-ca/help/4459942/description-preview-of-quality-rollup-net-framework-4-6-4-7
Пришло сегодня с KB 4462500.
В проектах на фреймворке 4.7 сабж вылетать перестал.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / KB4103472 & TaskCanceledException
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]