Anonymous | Login | Signup for a new account | 21-11-24 13:10 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0003029 | SAS.Планета | [All Projects] Баг | public | 19-05-2016 10:10 | 19-05-2016 14:39 | ||||
Reporter | zed | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | .Nightly | ||||||||
Target Version | 160606 | Fixed in Version | 160606 | ||||||
Summary | 0003029: AV при уменьшении числа MaxConnectToServerCount из настроек карты | ||||||||
Description | Если в настройках карты увеличить число качающих потоков, то всё ОК, но если потом попытаться их уменьшить, то вываливается исключение с попыткой обратиться к нулевому адресу вот тут:
в указанной строчке переменная FTileDownloaderConfig оказывается не инициализирована, да и весь Self равен nil. | ||||||||
Additional Information | Видимо, баг в методе нотифаера TNotifierBase.Notify, т.к. он в локе читает список листнеров, а потом вне лока вызывает их. Но может быть ситуация (и это наш случай), когда первый листнер, который получил сообщение (в нашем случае это TTileDownloaderList), берёт и удаляет объекты остальных листнеров этого же нотифаера (TTileDownloaderSimple). И даже не смотря на то, что удаляемые объекты отписываются от нотификаций, им эти нотификации всё равно прилетают, после уничтожения.
| ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Notes | |
(0017218) zed (manager) 19-05-2016 10:16 |
Думаю впереть вот такую конструкцию для фикса AV конкретно в TTileDownloaderSimple:
Или есть лучший вариант? |
(0017219) vdemidov (manager) 19-05-2016 10:19 |
Да, есть такая проблема. И я не знаю как ее решить. Переделка TNotifierBase.Notify с запихиванием нотификации под лок, только добавит возможность дедлока. |
(0017220) vdemidov (manager) 19-05-2016 10:21 |
> Думаю впереть вот такую конструкцию для фикса AV конкретно в TTileDownloaderSimple Боюсь это проблему, только сделает чуть-чуть более редкой, но не решит. |
(0017221) vdemidov (manager) 19-05-2016 10:23 |
Как вариант убрать из TTileDownloaderSimple слежение за конфигом, а следить за ним на уровень выше и при изменении пере создавать весь массив. |
(0017222) zed (manager) 19-05-2016 10:38 |
Т.е. в TTileDownloaderList.OnConfigChange выкинуть всю ту логику с копированием, а в TTileDownloaderSimple в качестве параметра передавать ITileDownloaderConfigStatic? Можно попробовать. Главное, чтобы в будущем ни у кого не возникло желания сделать оптимизацию и перенести часть слежения обратно в TTileDownloaderSimple. Придётся писать предупреждение от такого. |
(0017223) vdemidov (manager) 19-05-2016 10:55 |
>Т.е. в TTileDownloaderList.OnConfigChange выкинуть всю ту логику с копированием, а в TTileDownloaderSimple в качестве параметра передавать ITileDownloaderConfigStatic? Ага. Но вообще, нужно что-то придумывать с листенерами и нотифаерами. Я пытался сделать в листенере метод Disconnect, который вызывать в деструкторе класса, который этот листенер подписывает, но потом понял, что это тоже только маскирует часть ошибок. Пока пришел к тому, что пытаюсь всех подписчиков сделать максимально долгоживущими. |
Users who viewed this issue | |
User List | Anonymous (2678x), bk99 (1x), zed (15x), Papazol (1x), vdemidov (8x) |
Total Views | 2703 |
Last View | 21-11-2024 13:10 |
Issue History | |||
Date Modified | Username | Field | Change |
19-05-2016 10:10 | zed | New Issue | |
19-05-2016 10:16 | zed | Note Added: 0017218 | |
19-05-2016 10:19 | vdemidov | Note Added: 0017219 | |
19-05-2016 10:21 | vdemidov | Note Added: 0017220 | |
19-05-2016 10:23 | vdemidov | Note Added: 0017221 | |
19-05-2016 10:38 | zed | Note Added: 0017222 | |
19-05-2016 10:55 | vdemidov | Note Added: 0017223 | |
19-05-2016 14:39 | zed | Status | new => resolved |
19-05-2016 14:39 | zed | Fixed in Version | => 160606 |
19-05-2016 14:39 | zed | Resolution | open => fixed |
19-05-2016 14:39 | zed | Assigned To | => zed |
19-05-2016 14:39 | zed | Target Version | => 160606 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |