Anonymous | Login | Signup for a new account | 21-11-24 13:29 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 | ||||
0003158 | SAS.Планета | [All Projects] Баг | public | 06-12-2016 01:06 | 23-10-2017 20:05 | ||||
Reporter | Gromov | ||||||||
Assigned To | vdemidov | ||||||||
Priority | normal | Severity | block | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | Windows | OS Version | 10, 64-bit | |||||
Product Version | 160707 | ||||||||
Target Version | 181221 | Fixed in Version | 181221 | ||||||
Summary | 0003158: Зависание при изменении масштаба с 9 на 10 или с 10 на 9 при разрешении 3840х2160 | ||||||||
Description | Программа зависает, если в системе выставлено разрешение 3840х2160, в свойствах приложения в Windows во вкладке "Совместимость" стоит галочка "Отключить масштабирование изображения при высоком разрешении" и масштаб карты в программе меняется с 9-го на 10-й или наоборот. В случае, если не включать эту опцию, изображение выглядит размытым. | ||||||||
Steps To Reproduce | 1. Установить или распаковать программу 2. Выбрать исполняемый файл и в контекстном меню выбрать пункт "Свойства" 3. Во вкладке "Совместимость" поставить галочку "Отключить масштабирование изображения при высоком разрешении" 4. Приблизить карту до масштаба 9, попробовать перейти к масштабу 10 - программа зависает, отображая карту масштаба 9. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | SASPlanet.Debug.elf [^] (92,484 bytes) 06-12-2016 23:37 2017.01.23_SASPlanet.Debug.elf [^] (91,154 bytes) 26-01-2017 22:34 | ||||||||
Notes | |
(0017712) zed (manager) 06-12-2016 12:12 |
Интерфейс зависает полностью или только карта? На других зумах проблем нет? Запустите дебажную версию и после зависания подождите минуту, до появления сообщения об ошибке. |
(0017713) Gromov (reporter) 06-12-2016 12:30 |
Интерфейс зависает полностью, остается только принудительно снимать задачу. Где можно скачать дебажную версию, я попробую получить сообщение об ошибке. |
(0017714) zed (manager) 06-12-2016 12:32 |
Идёт в составе ночной сборки (SASPlanet.Debug.exe), отчёт об ошибке (файл с расширением *.elf) появляется в папке с программой. |
(0017716) Gromov (reporter) 06-12-2016 23:39 |
Запустил дебажную версию, отчет об ошибке загрузил. |
(0017717) zed (manager) 07-12-2016 06:19 |
Почему-то случается дедлок в TViewPortState.ChangeViewSize - во время смены зума с анимацией срабатывает событие TfrmMain.mapResize, которое вызывает этот метод и пытается захватить блокировку, в то время как TViewPortState.ChangeZoomWithFreezeAtVisualPointWithScale ещё не отработала и не освободила блокировку. Gromov Отключите опцию "Вид - Анимация при масштабировании", должно помочь, пока с дедлоком не разберёмся. |
(0017718) Gromov (reporter) 07-12-2016 07:30 |
Действительно, помогло. Спасибо! |
(0017782) Gromov (reporter) 23-01-2017 01:13 |
Теперь, на версии 170113.9655 - даже при отключении опции "Вид - Анимация при масштабировании" происходит зависание. |
(0017783) zed (manager) 23-01-2017 05:50 |
Сделайте отчёт об ошибке, как в прошлый раз. И уточните, баг только на зумах 9 <-> 10? |
(0017784) Gromov (reporter) 26-01-2017 22:34 |
Приложил отчет об ошибке, баг только на зумах 9 <-> 10. |
(0017785) vdemidov (manager) 27-01-2017 07:25 |
Я, кажется, понял в чем проблема. Классический дедлок связанный с рекурсивным вызовом примитива синхронизации не поддерживающего рекурсивных вызовов. Да еще и при редком стечении обстоятельств. Проблема в TViewPortState. В том что у него есть и блокировка FCS, и FView со своим вызовом уведомлений подписчиков под этой блокировкой. Как всегда исправить можно кучей разных способов: Можно сделать FCS поддерживающим рекурсивные вызовы. Это несколько смягчит, но, как мне кажется, не исправит проблему полностью, потому что в свое время я не рассчитывал TViewPortState на повторные вхождения и может вылезти что-то еще. А может и не вылезти. Можно вынести изменение FView из под блокировки. Но тогда может возникнуть хитрая ситуация гонки, если два потока вызвали изменение TViewPortState и действия одного из них просто потерялись, потому что он пользовался еще не обновленным значением FView. Можно поковырять ILocalCoordConverterChangeableInternal и сделать, что бы обязанностью вызывать нотификаторы подписчиков было у изменяющего. То есть SetConverter изменяет значение, но не дергает нотификаторы, а только возвращает bool указывающий на необходимость этого, а уже TViewPortState дергает добавленный метод DoNotify после освобождения блокировки. |
(0017786) vdemidov (manager) 27-01-2017 07:29 edited on: 27-01-2017 07:39 |
А еще можно сделать TViewPortState наследником TLocalCoordConverterChangeable и вообще избавиться от лишней блокировки FCS. ИМХО так будет даже правильнее, хотя я обычно предпочитаю аггрегацию наследованию. PS: разделение этих сущностей в разные объекты было сделано очень давно и с тех пор многое изменилось. Теперь такое разделение выглядит совсем неоправданным. |
(0017788) zed (manager) 28-01-2017 16:01 |
vdemidov Займёшься? |
(0017789) vdemidov (manager) 28-01-2017 16:58 |
Через 10 минут залью |
(0017790) vdemidov (manager) 28-01-2017 17:01 |
Вроде бы исправил причину дедлока. Проверяйте в следующей ночнушке. |
(0017791) Gromov (reporter) 30-01-2017 01:10 |
Проверил, версия SAS.Planet.Nightly.170128.9656 - все работает даже с анимацией. |
Users who viewed this issue | |
User List | Anonymous (3523x), zaresefat (1x), rass (1x), Aveveritas (1x), Cajun520 (2x), -off- (1x), Gromov (22x), bk99 (5x), vdemidov (30x), Garl (4x), zed (14x), NK0 (1x), [email protected] (1x), netsky (1x), VMatveev (1x), gma (1x) |
Total Views | 3609 |
Last View | 21-11-2024 13:29 |
Issue History | |||
Date Modified | Username | Field | Change |
06-12-2016 01:06 | Gromov | New Issue | |
06-12-2016 12:08 | zed | Project | Домен, сайт, форум, багтрекер => SAS.Планета |
06-12-2016 12:12 | zed | Note Added: 0017712 | |
06-12-2016 12:12 | zed | Status | new => feedback |
06-12-2016 12:30 | Gromov | Note Added: 0017713 | |
06-12-2016 12:30 | Gromov | Status | feedback => new |
06-12-2016 12:32 | zed | Note Added: 0017714 | |
06-12-2016 23:37 | Gromov | File Added: SASPlanet.Debug.elf | |
06-12-2016 23:39 | Gromov | Note Added: 0017716 | |
07-12-2016 06:19 | zed | Note Added: 0017717 | |
07-12-2016 07:30 | Gromov | Note Added: 0017718 | |
23-01-2017 01:13 | Gromov | Note Added: 0017782 | |
23-01-2017 05:50 | zed | Note Added: 0017783 | |
26-01-2017 22:34 | Gromov | File Added: 2017.01.23_SASPlanet.Debug.elf | |
26-01-2017 22:34 | Gromov | Note Added: 0017784 | |
27-01-2017 07:25 | vdemidov | Note Added: 0017785 | |
27-01-2017 07:29 | vdemidov | Note Added: 0017786 | |
27-01-2017 07:39 | vdemidov | Note Edited: 0017786 | View Revisions |
28-01-2017 16:01 | zed | Note Added: 0017788 | |
28-01-2017 16:03 | zed | Status | new => confirmed |
28-01-2017 16:03 | zed | Product Version | => 160707 |
28-01-2017 16:03 | zed | Target Version | => 26xxxx |
28-01-2017 16:03 | zed | Summary | зависание при изменении масштаба с 9 на 10 или с 10 на 9 при разрешении 3840х2160 => Зависание при изменении масштаба с 9 на 10 или с 10 на 9 при разрешении 3840х2160 |
28-01-2017 16:58 | vdemidov | Note Added: 0017789 | |
28-01-2017 16:58 | vdemidov | Assigned To | => vdemidov |
28-01-2017 16:58 | vdemidov | Status | confirmed => assigned |
28-01-2017 17:01 | vdemidov | Note Added: 0017790 | |
28-01-2017 17:01 | vdemidov | Assigned To | vdemidov => |
28-01-2017 17:01 | vdemidov | Status | assigned => feedback |
30-01-2017 01:10 | Gromov | Note Added: 0017791 | |
30-01-2017 01:10 | Gromov | Status | feedback => new |
30-01-2017 08:22 | vdemidov | Status | new => resolved |
30-01-2017 08:22 | vdemidov | Fixed in Version | => 181221 |
30-01-2017 08:22 | vdemidov | Resolution | open => fixed |
30-01-2017 08:22 | vdemidov | Assigned To | => vdemidov |
30-01-2017 08:23 | vdemidov | Target Version | 26xxxx => 181221 |
23-10-2017 20:05 | zed | Relationship added | has duplicate 0003291 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |