|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Такая ситуация: в среду вечером на рабочий комп по 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.
- это полный стектрейс, предоставляемый одним прикладным методом, который рекурсивно вытаскивает стектрейсы от InnerException, TargetInvocationException, AggregateException, итд. Т.е. то, что приведено выше - это всё, что есть. Вчера еще день был посвящен на выискивание причины этого TaskCanceledException. Под вечер вспомнил, что в среду ставился какой-то апдейт, посмотрел - ага, для .Net Framework. Снес этот апдейт - всё снова заработало нормально. Никто с аналогичной ситуаацией не сталкивался? P.S. Причем к моменту вылета этого приложение уже наполовину завершено - например, используемый NLog уже успел закрыть все свои логгеры (используется 2 target'а: console и file), и вышеприведенное - от обычного Console.WriteLine. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 06:17 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Вполне может быть что KB ни при чем и просто не освобождаются корректно ресурсы. А обновление просто "звезды сложило по другому". - ошибка на экран выходит? Или только в логе? - если просто запуск и сразу закрыть тоже? Или после некоторого функционала? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 07:45 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
И этот тоже не читатель... Сон Веры ПавловныСнес этот апдейт - всё снова заработало нормально. Petro123и просто не освобождаются корректно ресурсы Ага, поучите давайте меня корректно освобождать ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 08:26 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Сон Веры Павловныэтот тоже не читатель...есть куча примеров когда апдейт просто вскрывает недостаток кода. Сон Веры ПавловныАга, поучите давайте меня корректно освобождать ресурсы.профи тоже ошибаются))). Как пить дать)). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 08:39 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Petro123Сон Веры Павловныэтот тоже не читатель...есть куча примеров когда апдейт просто вскрывает недостаток кода. Приложению, про которое выше шла речь, уже лет 5, и за все 5 лет недостаток не вскрывался, а тут вдруг вскрылся, ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 08:55 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, ОК. Один шанс на 500 что бага в апдейте MS. На вопросы хотите отвечайте. Хотите нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 09:00 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
преостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются. Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов. Найдете нужный таск, поймете природу происходждения ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 12:56 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Roman Mejtesпреостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются. Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов. Найдете нужный таск, поймете природу происходждения ошибки. Это приложение не использует таски. Вообще. И async-await тоже не использует. Он так сделано, что ему это не нужно. У меня подозрение, что что-то они там нахимичили со слабой привязкой биндингов к INPC (см. вторую снизу строку стектрейса - там фигурирует некий класс WeakEventTable). И да, само приложение в непосредственно слабые сслыки и события не использует - только опосредованно в виде биндингов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 13:14 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныRoman Mejtesпреостановить при заверешении отладчиком приложение и посмотрите в окне Task'ов, какие таски в данный момент выполняются. Из ошибки же видно, что выполнялся таск и он был отменён, судя по всему в момент освобождения ресурсов. Найдете нужный таск, поймете природу происходждения ошибки. Это приложение не использует таски. Вообще. И async-await тоже не использует. Он так сделано, что ему это не нужно. У меня подозрение, что что-то они там нахимичили со слабой привязкой биндингов к INPC (см. вторую снизу строку стектрейса - там фигурирует некий класс WeakEventTable). И да, само приложение в непосредственно слабые сслыки и события не использует - только опосредованно в виде биндингов.ну если вы их не используйте, это не значит, что в WPF они не используются :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2018, 13:35 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Выяснилось, что я не один такой: обсуждение на 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.
Причину ошибки поймать так и не удалось, она практически нелокализуема - встречается в куче проектов (при этом не использующих weak events напрямую), и не ловится даже обрезанием проекта по частям - то вдруг перестает вылетать, то опять начинает. Посмотрим, что с этим они сделают дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 09:02 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
(P.S. причина ошибки, если что - не очищенная WeakEventTable. А Task, который canceled, запускается внутри сборок CLR - т.е. он совсем не мой). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2018, 09:08 |
|
KB4103472 & TaskCanceledException
|
|||
---|---|---|---|
#18+
Ну наконец-то. Не прощло и полгода - управились за 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 сабж вылетать перестал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 11:49 |
|
|
start [/forum/topic.php?fid=21&fpage=4&tid=1440384]: |
0ms |
get settings: |
15ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 246ms |
total: | 383ms |
0 / 0 |