SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002301SAS.Планета[All Projects] Багpublic28-12-2013 21:0629-01-2014 19:04
Reporterdmytro_ovdiienko 
Assigned Tozed 
PrioritynormalSeveritymajorReproducibilitysometimes
StatusresolvedResolutionfixed 
PlatformWindowsOSXPOS VersionSP3
Product Version131111 
Target Version140303Fixed in Version140303 
Summary0002301: Залипания во время просмотра карты
DescriptionВ какой-то момент начинает жутко тормозить выкачка тейлов во время просмотра карты. Слои OSM MAPNIK и OSM Mapsurfer. Когда с ними все плохо, перехожу на OSM CycleMap. Но тогда и он начинает тупить. И вроде как начинаю думать на тормоза OSM сервера, но в браузере никаких тормозов нет. Если же SASPlanet закрыть и открыть по новой, все сразу начинает летать.

В чем может быть проблема? Может это зависание всех воркеров выкачки тейлов? Если да, можно как-то очистить очередь задач?
TagsNo tags attached.
Attached Files7z file icon SAS.DeBug.2301.7z [^] (2,672,234 bytes) 13-01-2014 19:56

- Relationships
related to 0001103closedvdemidov Останавливается скачивание тайлов для вывода на экран 
related to 0002312resolvedzed Очередь загрузки тайлов видимой области обнуляется через 30 секунд, даже если тайлы ещё не загрузились 
child of 0002307resolvedzed В процессе закачки видимой области "моргают" тайлы 

-  Notes
(0013452)
dmytro_ovdiienko (reporter)
28-12-2013 22:00

Вот опять залипло. "Queue: 0". И почемуто только OSM MAPNIK и Mapsurfer. Слои Bing или OSM CycleMap не глючат. Перезапуск программы решает проблему.
(0013453)
gma (reporter)
29-12-2013 08:32

Аналогично. Всё собирался создать инц., да грешил на свою машину. Если достаточно долго (мин. 5--10) сёрфить по любой карте -- она сначала начинает тормозить, а потом перестаёт скачиваться вовсе. При этом загрузка по области (если запущена параллельно) продолжается, как ни в чём не бывало. Замечено в течение последнего года на разных версиях, в т.ч. ночнушках. Перезагрузка помогает всегда.
Win-vistahome.
(0013456)
zed (manager)
29-12-2013 11:14

Проверьте воспроизводимость на текущей ночнушке.
(0013457)
dmytro_ovdiienko (reporter)
29-12-2013 14:21

Воспроизводится.
(0013474)
zed (manager)
31-12-2013 11:28

У меня не воспроизводится. Можно по шагам, на чистой ночнушке?
(0013475)
dmytro_ovdiienko (reporter)
31-12-2013 11:32

Сложно объяснить... Просто выбираю OSM MAPNIK и дергаю карту туда сюда на монике с разрешением 1680*1080. В какойто момент карта перестает загружаться. Переключаюсь на mapsurfer. Опять дергаю туда-сюда. И эта зависает. Переключение опять на MAPNIK н помогает.

Может сделать каокй-то билд, к которому можно было бы подключиться дебагером и получить дамп? А дамп потом можно было бы посмотреть у тебя на машине.
(0013477)
zed (manager)
31-12-2013 11:41

В ночнушке идёт SASPlanet.Debug.exe который ловит ошибки, но если там что-то тихо-мирно просто висит, то тут мало что поможет.

Раз проблема только на OSM, наверное имеет смысл сделать дамп запросов на сервер любым снифером. Может там что-то крайне неожиданное прилетает от сервера и сокет просто остаётся в подвешенном состоянии. И можно попробовать в zmp ограничить или наоборот увеличить число подключений к серверу (MaxConnectionsCount) и прописать в хидерах "Connection: Close".

Но не факт, что проблема в http-стеке. Может просто глючит очередь или ещё в одном из тысячи возможных мест...
(0013478)
vdemidov (manager)
31-12-2013 11:56

А еще, возможно просто есть отличие между отправляемым САС.Планетой запросом и запросом из браузера. И сервер по этой разнице начинает банить такие запросы.
(0013533)
dmytro_ovdiienko (reporter)
10-01-2014 23:46

Может какие-то логи добавить для отладки?
(0013535)
gma (reporter)
11-01-2014 08:03

"У меня не воспроизводится. Можно по шагам, на чистой ночнушке?" вчерашняя 1400110 -- воспроизводится, м.б. чуть позже, чем на прошлогодних. По шагам: запускаю САС, выбираю карту (в моём случае это любые спутники, вчера тестировал на Imagery2) и стрелочками двигаю карту (z16, если важно) вверх, вниз, влево, вправо. Минут 5--7 всё летает, потом начинает подтормаживать, а минут через 15--20 от начала и вовсе встаёт (именно эта карта, которая тестировалась -- остальные поначалу помогают растормаживать и с ними всё нормально, а потом только другие и качаются). Принудительная загрузка конкретных тайлов (на правой кнопке) работает, т.е. тормоза не абсолютные, а только на сёрфинг. И, как я говорил выше, закачка по областям тоже работает нормально.
(0013536)
zed (manager)
11-01-2014 08:10

> и стрелочками двигаю карту (z16, если важно) вверх, вниз, влево, вправо
Так может клинит именно это перемещение? Плавную анимацию отключать пробовали?
(0013549)
zed (manager)
12-01-2014 14:38

Да, есть такое-то странное поведение на этой карте. До полного "залипания" довести ситуацию не получилось, но то, что тайлы начинают качаться медленно и не все, это факт. Причём, все запросы ушедшие на сервер возвращаются с 200 ОК, но вот очередь тайлов может быстренько скатиться до 0 (с 32-х), скачав при этом всего несколько тайлов.
(0013550)
zed (manager)
12-01-2014 15:13
edited on: 12-01-2014 15:13

Понял почему счётчик слетает до нуля. Если загрузка тайлов очень медленная (по 15 сек. на тайл), то по TTL (30 сек.) этот поток будет успешно прибит и очередь обнулится. Но вопрос, почему эти тайлы начинают вдруг так медленно качаться, остаётся открытым.

(0013555)
gma (reporter)
12-01-2014 17:07

"Так может клинит именно это перемещение?" -- нет, программе равно, чем её перемещают, мышкой или клавой.
"Плавную анимацию отключать пробовали?" -- не отключается. Там есть "Аним. при масштабировании" -- она у меня выключена по умолчанию. И есть "Движение по инерции" -- вот оно, будучи выключенным, всё равно продолжается. Вер: 140110.7793.
Кстати, обратный счётчик показывает цены на яхты, но где-то не здесь. Впрочем, это отдельный баг и оформлять его нужно соотв. )
(0013556)
zed (manager)
12-01-2014 17:09

Со счётчиком всё в порядке.
(0013557)
zed (manager)
12-01-2014 17:58

В общем, полечил загадочное поведение 0002301:0013549, а по поводу снижения скорости загрузки, я без понятия. У меня это торможение наблюдается практически сразу после запуска (RAM-кэш + активная смена зума и позиции, не дожидаясь окончания загрузки тайлов). Но снифером видно, что все потоки качают, но сервер отдаёт очень медленно. Ну, или может это мы вдруг начинаем спать между приёмом пакетов - но с чего бы? Тем более, что при закачке того же гугла всё летает.
(0013558)
dmytro_ovdiienko (reporter)
12-01-2014 18:03

И после рестарта приложения все опять работает без тормозов. И выкачка региона тайлов, как говорит gma, работает нормально. Чем отлиается реализация выкачки региона и экрана?
(0013559)
zed (manager)
12-01-2014 18:13

> И после рестарта приложения все опять работает без тормозов.

Перезапуск не обязательное условие. Можно просто переключиться на другую карту и/или подождать некоторый таймаут, пока SAS не закроет все соединения с этим сервером или пока сервер не решит, что можно уже и не тормозить.

> И выкачка региона тайлов, как говорит gma, работает нормально. Чем отлиается реализация выкачки региона и экрана?

У меня эти вещи работают одинаково медленно. И реализация там ничем не отличается - закачка идёт через одну и туже очередь.
(0013560)
dmytro_ovdiienko (reporter)
12-01-2014 18:15

С перезапуском ты продолжаешь работать с той же картой. То есть, врядли это тормоза на стороне сервера. Можно посчитать задержку между прибытием пакета на сетевуху и появлением ее на экране.
(0013561)
zed (manager)
12-01-2014 18:20

А вот у меня, перезапуск не помогает. Только что проверил. Видно я сегодня за вечер уже порядком поднадоел серверу.

> Можно посчитать задержку между прибытием пакета на сетевуху и появлением ее на экране.
Вы для начала, посчитайте скорость прибытия пакетов на сетевуху. Т.е. нужны убедительные доказательства, что это тормозит не сервер и что это не проявления своеобразного бана. А то, что в браузере всё работает - совсем не показатель. Там же куки и все дела, а тут - робот.
(0013562)
dmytro_ovdiienko (reporter)
12-01-2014 18:22

Дело в том, что скорость прибытия пакетов на сетевуху зависит от скорости их выкачки. Если приложение тормозит, то и на той стороне посылают с задержкой.
(0013563)
dmytro_ovdiienko (reporter)
12-01-2014 18:24
edited on: 12-01-2014 18:24

Ок. попробую посчитать скорость ответа на HTTP запрос

(0013564)
zed (manager)
12-01-2014 18:24

Поставьте кэширующий прокси между SAS и сервером. Пускай прокси выкачивает без задержек, если у него получится и отдаёт тайлы SAS-у.
(0013565)
dmytro_ovdiienko (reporter)
12-01-2014 19:23

Похоже, тормозит именно SAS. Ответ от WEB сервера приходит сразу. А вот новые запросы SAS отправляет с задержкой. Ща выложу лог проксисервера и попробую поснифить.

Хм... может в системе не хватает ресурсов. Может надо стараться переиспользовать сокеты?
(0013566)
zed (manager)
12-01-2014 19:24

Keep-Alive же?
(0013567)
dmytro_ovdiienko (reporter)
12-01-2014 19:25

Вот к примеру залип на 3 сек начиная с "!-<12/01 21:11:25".
(0013568)
dmytro_ovdiienko (reporter)
12-01-2014 19:26

>Keep-Alive же?
В логе видно, как выделяются постоянно новые ТЦП порты
(0013569)
dmytro_ovdiienko (reporter)
12-01-2014 19:28

Запись "!->12/01 21:11:27 [127.0.0.1:61011>3128] (t3 421) >Proxy in:7426 out:253
" похоже означает закрытие сокета на строне SAS.
(0013570)
zed (manager)
12-01-2014 19:41

> Ответ от WEB сервера приходит сразу
Приход ответа, это не мгновенная операция в любом случае. И из ваших логов можно только увидеть, когда ответ начал приходить, но не видно, когда же он пришёл целиком. У меня некоторые тайлы по 20 секунд грузились и в снифере было хорошо видно, как приходят "пакеты".
(0013571)
zed (manager)
12-01-2014 19:42

> В логе видно, как выделяются постоянно новые ТЦП порты
Значит виноват прокси. Через снифер порты не выделяются и я наблюдаю честный Keep-Alive (OSM MAPNIK).
(0013572)
zed (manager)
12-01-2014 19:45

И для тестов лучше в zmp прописать MaxConnectToServerCount=1 и в скрипте убрать генерирование a/b/c префиксов в url (и слать всегда, скажем, на "а").
(0013573)
zed (manager)
12-01-2014 19:59
edited on: 12-01-2014 19:59

У меня, кстати, было опять начало качать быстро, но насёрфив около 800 тайлов оно таки начало тормозить. Хотя всё шло в один поток и с Keep-Alive. И после перезапуска SAS, оно хоть и начало ходить через другой порт, но всё так же медленно, с самого же первого тайла.

Так что тут (конкретно на карте OSM MAPNIK), SAS однозначно ни при чём.

(0013574)
dmytro_ovdiienko (reporter)
12-01-2014 20:34

Поймал зависон. Ваершарк показвыает, что никаких пакетов со стороны SAS не уходит. У мну WinXP SP3.
(0013575)
dmytro_ovdiienko (reporter)
12-01-2014 20:36
edited on: 12-01-2014 20:38

А через 58сек соединение с OSM закрылось. На попытки подвигать карту OSM никак не реагирует. Закрытие подключения инициировал OSM.

(0013576)
zed (manager)
12-01-2014 21:06

> никаких пакетов со стороны SAS не уходит
Это скорее всего баг с очисткой очереди 0002312 - нужно проверять в завтрашней ночнушке.

> На попытки подвигать карту OSM никак не реагирует
Т.е. не отвечает на запросы или SAS их не шлёт?
(0013577)
dmytro_ovdiienko (reporter)
12-01-2014 21:08

SAS не завис. На мышь и клаву реагирует. Просто не шлет запросы на веб сервер.
(0013578)
dmytro_ovdiienko (reporter)
12-01-2014 21:10
edited on: 12-01-2014 21:10

А этот баг с очисткой очереди, как-то объясняет, почему, если переключиться на другую карту, то она работает?

(0013579)
zed (manager)
12-01-2014 21:11

Да. Но этот баг на смещение карты не завязан, т.е. закачка должна была возобновиться.
(0013580)
dmytro_ovdiienko (reporter)
12-01-2014 21:13

Я ждал минуты 4-5. Закачка не возобновилась.
(0013581)
zed (manager)
12-01-2014 21:16

Она должна была начаться мгновенно после смещения карты (если конечно в кэше тайлов нету).

А по логу (sas-osm) я никаких замечаний не вижу.
(0013582)
dmytro_ovdiienko (reporter)
12-01-2014 21:21

> Она должна была начаться мгновенно после смещения карты (если конечно в кэше тайлов нету).

Я переключил SAS в режим Internet. Кеш не должен был использоваться. Но по ощущениям, SAS еще кеширует в памяти. Еще я в ZMP добавил MaxConnectToServerCount=1, но подключений было 3шт (судя по pcap файлу)

> А по логу (sas-osm) я никаких замечаний не вижу.
Ага. Ничего необычного. Но на последнем тайле все наглухо остановилоась и SAS больше не пробовал что-либо качать.
(0013583)
zed (manager)
12-01-2014 21:27

>но подключений было 3шт (судя по pcap файлу)
Потому что у сервера алиасы a/b/c:
a.tile.openstreetmap.org
b.tile.openstreetmap.org
c.tile.openstreetmap.org

и я рекомендовал исправить скрипт, чтобы оно всегда шло на a.tile.openstreetmap.org

>Но по ощущениям, SAS еще кеширует в памяти
Да, где-то в конфигах есть переменная TileMaxAgeInInternet
(0013584)
dmytro_ovdiienko (reporter)
12-01-2014 21:30

Предлагаю нашпиговать SAS логами и выдать мне на растерзание.
(0013585)
zed (manager)
12-01-2014 21:37
edited on: 12-01-2014 21:38

Надо подумать, что именно мониторить.

Попробуйте завтра взять ночнушку, включить у карты RAM-кэш и в режиме интернет+кэш погонять до посинения.

Почему RAM-кэш, а не просто режим Интернет? Потому что у первого есть конфиги, доступные через zmp:

UseMemCache - использовать кэш в памяти (при CacheType=9 (RAM-кэш) отключение данной опции приведёт к ошибке), включено по-умолчанию
MemCacheCapacity - количество тайлов кэшируемых в память. По-умолчанию = 100
MemCacheTTL - время жизни тайлов (в миллисекундах), кэшируемых в память. По-умолчанию = 60000 мс. (1 мин.)
MemCacheClearStrategy - стратегия очистки (по TTL) кэшируемых в память тайлов. Принимает значения: 0 - удалять ВСЕ тайлы из мем-кэша, если истёк TTL у самого СТАРОГО тайла; 1 - удалять ВСЕ тайлы из мем-кэша, если истёк TTL у самого МОЛОДОГО тайла; 2 - удалять только те тайлы, у которых истёк TTL. По-умолчанию включён режим 1.
RestartDownloadOnMemCacheTTL - автоматически перезакачивать тайлы в пределах видимой области экрана при очистке мем-кэша (работает только если UseMemCache=1). По-умолчанию отключено.

Описание формата пользовательских карт zmp

(0013586)
zed (manager)
12-01-2014 21:53

Кстати, в режиме Интернет, оно пишет в кэш и перезаписывает существующие тайлы. Возможно каким-то боком зависает запись в кэш, а все потоки его дружно ждут.
(0013587)
dmytro_ovdiienko (reporter)
12-01-2014 21:56

Это объясняет, почему другие карты продолжают работать?
(0013588)
dmytro_ovdiienko (reporter)
12-01-2014 21:59

Для включения RAM Cache нужно добавить в zmp только это?

UseMemCache=1
(0013589)
zed (manager)
12-01-2014 22:06
edited on: 12-01-2014 22:07

> Это объясняет, почему другие карты продолжают работать?
Зависание кэша? Естественно - у каждой карты свой кэш и своя качалка.

> Для включения RAM
Для включения - достаточно в гуе зайти в настройки карты (Ctr+Alt+P) и выбрать "Тип кэша - ОЗУ". А в zmp можно уменьшить MemCacheTTL до 15000 (15 секунд) или количество кэшируемых тайлов. Но это уже на усмотрение.

(0013590)
dmytro_ovdiienko (reporter)
12-01-2014 22:07

Ок. Завтра проверю.
(0013591)
zed (manager)
12-01-2014 22:11

И вдогонку, по тем же 3 кнопкам Ctr+Alt+P, в самом низу есть надпись: "Разрешено скачивание" и в поле - "Да". Так вот, когда оно перестанет качать, загляните сюда, возможно оно там что-то интересное напишет.
(0013593)
dmytro_ovdiienko (reporter)
13-01-2014 19:05

Воспроизвел на SAS.Planet.Nightly.140113.7797. Кеш - RAM. Когда зависло, размер очерели == 0 и при перемещении карты не увеличивался. Похоже, что SAS не добавляет тайлы в очередь.
(0013594)
dmytro_ovdiienko (reporter)
13-01-2014 19:06
edited on: 13-01-2014 19:08

Мне кажется, где-то увеличивается счетчик подключения к серверу и не декрементируется.

(0013595)
zed (manager)
13-01-2014 20:03

Приложил сборку для тестов. Запустить Dbgview.exe, затем SASPlanet.exe, добиться зависания и сбросить лог дебагера сюда. Дебажные сообщения выводятся только для одного класса TUiTileDownload, на всякий случай в архиве исходник этого класса, где видно когда и какие сообщения выводятся (и какие вообще могут быть).
Сообщения с текстом "Nothing to do", кроме "Nothing to do: if VNeedDownload" когда тайлы есть в кэше, следует рассматривать как крайне подозрительные.
(0013596)
dmytro_ovdiienko (reporter)
13-01-2014 20:14

Во время загрузки в лог что-то должно выводиться? Я запустил, скачал несколко тайлов, но ничего не вижу в dbgview
(0013597)
zed (manager)
13-01-2014 20:15

Да, должны бежать строчки очень активно.
(0013598)
dmytro_ovdiienko (reporter)
13-01-2014 20:20

Не пишет. Моя программа пишет, а SAS - не пишет.

#include <Windows.h>

int main() {
    OutputDebugString("123\n");
}
(0013599)
zed (manager)
13-01-2014 20:28

Вот блин :(
Вариант - скачать виртуалку http://yadi.sk/d/bZ3bEBzMC2biN и попробовать запустить там. Тем более, там вы при желании сможете запустить SAS прямо под отладчиком и посмотреть как минимум на имена потоков и их наличие в момент бага. Ну и брекпоинты, тоже полезная вещь.
(0013600)
dmytro_ovdiienko (reporter)
13-01-2014 23:49

файлы от 27.03.2013.. это точно последнее?
(0013601)
dmytro_ovdiienko (reporter)
13-01-2014 23:53

У меня есть CBuilder6. Дай плз сурсы от SAS.Planet.Nightly.140113.7797
(0013602)
dmytro_ovdiienko (reporter)
14-01-2014 00:12
edited on: 14-01-2014 08:54

Нашел сурсы. Что выполняется при перемещении карты?
Где бряки ставить?

(0013605)
vdemidov (manager)
14-01-2014 09:08

Мне кажется вы фигней занимаетесь. В первую очередь нужно проверить где затык: в сервере, подсистеме загрузки или в загрузчике видимой области. Последний отсекается очень просто. После того как тайлы качаться перестали нажимаем Ctrl-A и запускаем скачивание текущего экрана как области. Если качается, то ошибка именно в загрузке видимой области, если нет, то в подсистеме загрузки.
(0013607)
zed (manager)
14-01-2014 09:19

>файлы от 27.03.2013.. это точно последнее?
В виртуалке - старые исходники и компоненты, но их легко обновить:

- зайти в папку c:\SASPlanet и выполнить в консоли 2 команды "hg pull" (затянуть свежие сорцы с сервера) и "hg update -C" (применить обновление и отбросить локальные изменения)

- зайти в папку C:\Program Files\CodeGear\RAD Studio\5.0\lib_sas, удалить папку pascalscript и выполнить те же 2 команды: "hg pull" и "hg update -C"

После этого можно запускать SASPlanet.dpr.

>У меня есть CBuilder6
Не подойдёт.

>Что выполняется при перемещении карты?
В u_UiTileDownload.pas вызывается TUiTileDownload.OnPosChange; Соответственно, поток который ставить тайлы в очередь закачки, будет называться TUiTileDownload (он создаётся вот так: VDownloadTask := TBackgroundTask.Create)

Очередь запросов в u_InterfaceQueue.pas, поток, который обрабатывает очередь - u_TileRequestQueueProcessorThread.pas (имя потока в дебагере TTileRequestQueueProcessorThread, количество потоков во время загрузки ограничено значением MaxConnectToServerCount).
(0013608)
zed (manager)
14-01-2014 09:23

>нужно проверить где затык: в сервере, подсистеме загрузки или в загрузчике видимой области
Сервер уже исключили. И очень большое подозрение именно на загрузчика видимой области (читай второе сообщение 0002301:0013453), именно на него (TUiTileDownload) я и натыкал дебажных сообщений, чтобы понять, где там может быть затык.

У себя я так и не смог воспроизвести, поэтому вся надежда на dmytro_ovdiienko
(0013610)
zed (manager)
14-01-2014 09:53

dmytro_ovdiienko
И да, если будете расставлять бряки в отладчике, то в папке Maps лучше оставить только одну карту, иначе в OnPosChange будут прилетать мусорные сообщения от всех остальных карт.
(0013611)
vdemidov (manager)
14-01-2014 10:11

>Сервер уже исключили. И очень большое подозрение именно на загрузчика видимой области (читай второе сообщение 0002301:0013453), именно на него (TUiTileDownload) я и натыкал дебажных сообщений, чтобы понять, где там может быть затык.
Ну так я и описал способ в этом убедиться на 100% даже без отладчика.
(0013612)
zed (manager)
14-01-2014 10:14

Ну убедились, а дальше что? Как баг найти?
(0013613)
dmytro_ovdiienko (reporter)
14-01-2014 10:20

Ок. Я сначала еще раз проверю, что поблема в выкачке. Потом буду дебажить. Хотя не уверен, что у меня получится это на виртуалке. На Win7, например, почему-то не воспроизводится. Может, это какаято особенность моей ОС.
(0013614)
dmytro_ovdiienko (reporter)
14-01-2014 10:28

И мне нужны исходники того кода, с которым собирался Дебаг, который мне выдал zed.
(0013615)
zed (manager)
14-01-2014 10:32

Я уже объяснил, как получить сорцы 0002301:0013607, а единственное отличие моего дебага - изменения в u_UiTileDownload.pas, который я также приложил в аттаче. Так что заменив его, вы получите идентичную копию сборки.
(0013616)
vdemidov (manager)
14-01-2014 10:48

> Ну убедились, а дальше что? Как баг найти?
Точно убедились? Я не уверен, что баг именно в TUiTileDownload. Не так уж много там кода.
(0013617)
zed (manager)
14-01-2014 10:50

Тут одно из двух: либо прилетает OnPosChange и где-то в TUiTileDownload не обрабатывается, либо не прилетает и тогда проблема выше.
(0013618)
vdemidov (manager)
14-01-2014 11:40

> Тут одно из двух: либо прилетает OnPosChange и где-то в TUiTileDownload не обрабатывается, либо не прилетает и тогда проблема выше.
Если бы это было бы так, то не было бы такого:
> Вот опять залипло. "Queue: 0".
(0013619)
zed (manager)
14-01-2014 11:41

Именно такое и было бы :)
(0013620)
vdemidov (manager)
14-01-2014 11:50

Я про "либо не прилетает"
(0013621)
zed (manager)
14-01-2014 11:51

Да в обоих случаях счётчик будет стоять на нуле. Ты посмотри, где он увеличивается.
(0013623)
dmytro_ovdiienko (reporter)
14-01-2014 12:49

Если бы не прилетало событие, тогда другие карты тоже бы не работали. Верно?
(0013624)
zed (manager)
14-01-2014 13:04

Если карта вдруг не отписалась от уведомлений, то да. Вот и выходит, что затык в TUiTileDownload.
(0013625)
dmytro_ovdiienko (reporter)
14-01-2014 13:30

А она может отписаться?
(0013626)
zed (manager)
14-01-2014 13:38

Отписка происходит только в момент уничтожения карты (TUiTileDownload.Destroy), поэтому, практически - нет.
(0013627)
gma (reporter)
15-01-2014 08:40

"После того как тайлы качаться перестали нажимаем Ctrl-A и запускаем скачивание текущего экрана как области" -- Дождался затыка, запустил закачку области -- пошла на ура на хорошей скорости. Экран после этого всё равно не завёлся.
(0013628)
vdemidov (manager)
15-01-2014 09:40

Имхо чем пытаться починить TUiTileDownload лучше сразу его переписать полностью. То есть завести массивчик отправленных запросов и итератор тайлов как поля объекта. Убрать оттуда отдельный поток для каждой карты, а завести один поток на все карты, который будет дергать активные. Выкинуть тот семафор нафиг. И тд.
(0013629)
zed (manager)
15-01-2014 10:27

>Дождался затыка, запустил закачку области
Удалось ли собрать дополнительную информацию при помощи dbgview во время затыка?

>Имхо чем пытаться починить TUiTileDownload лучше сразу его переписать полностью
Поскольку неизвестно в чём баг, то нет никаких гарантий, что ты его не перенесёшь в новую реализацию. Сейчас по твоим словам реализация простая до предела и глючить там нечему (а оно таки глючит), но предлагаешь усложнить реализацию на порядок, в надежде избавиться от глюка. Где логика? Хотя, несомненно, ты можешь попробовать всё переписать как запланировал, возможно и поможет. Но dmytro_ovdiienko и gma я бы попросил продолжить поиск бага в текущей реализации, а не ждать нового движка от vdemidov.

Мне кажется, что OnPosChange должен прилетать и скорее всего мы стартуем поток, но где-то в if/then с завидным постоянством выходим в отсутствующий else блок (куда я напихал OutpuDebugString) и ничего не делаем. И это может быть проблема не собственно TUiTileDownload, а каких-то внешних факторов.
(0013630)
zed (manager)
15-01-2014 10:31

gma
>Экран после этого всё равно не завёлся
И небольшое уточнение терминологии: "затык" это когда карта перестаёт качать и Queue: 0? Показания счётчика в этом случае очень важно.
(0013631)
gma (reporter)
15-01-2014 16:02

"И небольшое уточнение терминологии: "затык" это когда карта перестаёт качать и Queue: 0? Показания счётчика в этом случае очень важно" -- Да, когда перестаёт качать. Про счётчик я выше уже говорил, что в норме! он показывает количество лун у марса, иногда у земли, но это число ни от чего не зависит.
Сегодня на работе скачал Dbw и попробовал добиться результата с ним -- ничего не вышло, качает как миленькая, дошло до почти трёх тысяч (почти час качал) и тут рабочее время кончилось. Но раньше я ОСМ такими объёмами никогда не качал, да и вообще настройки у меня сильно отличаются, не знаю, важно ли это.
(0013633)
zed (manager)
15-01-2014 16:40

> Про счётчик я выше уже говорил, что в норме!
Что в норме? Он-то в норме, это и так ясно, но должен быть равен нулю, если зависло. Если не равен нулю, значит не зависло, а просто идёт очень медленная загрузка тайлов в фоне.

> он показывает количество лун у марса, иногда у земли, но это число ни от чего не зависит.

А я вам ответил, что со счётчиком всё в порядке. Может вы просто не понимаете, что он отображает или перевод вводит в заблуждение. В английском варианте этот счётчик называется Queue - Очередь. В него записывается число тайлов поставленных в очередь на загрузку. Каждая карта имеет свою собственну очередь, но счётчик показывает суммарное число для всех отображаемых карт. К тому же, есть ещё такой момент - для каждой карты введён лимит на количество тайлов, одномоментно находящихся в очереди. И по-умолчанию этот лимит равен 32. Таким образом, если включена одна карта на HD мониторе, то для загрузки экрана нужно скачать порядка 50 тайлов. Карта ставит в очередь 32 штуки и ждёт, пока скачается хотя бы один. В этот момент счётчик показывает эти самые 32. Как только тайл скачался, счётчик становится 31, карта тут же добавляет ещё один тайл в очередь и опять ждёт. При этом операция может произойти настолько быстро, что смены цифр 32 - 31 - 32 вы можете и не увидеть, поэтому некоторое время в Queue будет отображаться 32, а потом начнёт падать до нуля. Или может закачаться сразу 4 тайла (по-умолчанию каждая карта качается в 4 потока), тогда счётчик упадёт до 28, а потом опять увеличится до 32 и уже это изменение счётчика вы можете заметить.
Соответственно, если включены 2 карты, то счётчик будет крутиться возле 64-х и не выше, хотя вообще, нужно загрузить 100 тайлов (условно), чтобы обновить экран.
(0013637)
gma (reporter)
16-01-2014 10:04

"если включены 2 карты, то счётчик будет крутиться возле 64-х и не выше" -- включена как правило одна карта, лун у марса две, у земли -- одна, вот примерно эти числа он мне и показывает чаще всего, иногда 7, 4 или другое что, но логики в его показаниях я не могу найти. В скачанном дебаге САСовый счётчик показывал всё правильно, у меня он может полчаса показывать единицу, независимо от происходящего на экране.
(0013644)
nvet (reporter)
17-01-2014 21:50

Остановка закачки в Ui может происходить на разных картах.У меня например наблюдается для спутника Гугла после скачки нескольких тысяч тайлов.
После остановки, под отладчиком нашел "подозрительные" места в коде:
-в модуле TBackgroundTask в процедуре Execute в строке 134 переменная VOperatonID принимает значение 0.
-в результате в модуле TUiTileDownload в процедуре DoProcessDownloadRequests в строке 377,378 происходит обход кода закачки.
Если закачка идет, VOperatonID имеет значение не равное 0.
(0013646)
zed (manager)
18-01-2014 18:44

> в модуле TBackgroundTask в процедуре Execute в строке 134 переменная VOperatonID принимает значение 0

Значит поток был только что создан и это первая задача. 0 - абсолютно нормальное значение.

> в результате в модуле TUiTileDownload в процедуре DoProcessDownloadRequests в строке 377,378 происходит обход кода закачки

Имеется в виду проверка "if ACancelNotifier.IsOperationCanceled(AOperationID) then"? Первый раз может и сработать, если карта движется и прежде чем мы дошли до этой строчки у нас уже успела стартануть новая задача (должны были прилететь вот сюда, отменить старую задачу и увеличить счётчик следующей операции).

И обновите свою версию исходников, сейчас на строках 377,378 выполняются совсем другие операции.
(0013648)
nvet (reporter)
18-01-2014 20:16
edited on: 18-01-2014 20:42

> Имеется в виду проверка

Да, эта самая проверка(нов 407 строка).
Попробую повторить остановку на свежей ночной сборке.
Если будет, то и на обновленных исходниках.

Проверка на версии SAS 140118.7798
Карта спутник гугл.Остановка произошла на 1926 тайлах,осталось 0.
Загрузка по контекстному меню происходит, счетчик при этом увеличивается на 1(1927 и т.д.).
Перемещения карты мышкой и стрелками к загрузке не приводят,очередь загрузки стоит на нуле во время перемещений.

(0013651)
zed (manager)
20-01-2014 08:27

Если кому-то удастся воспроизвести баг на виртуалке под дебагером, то эту виртуалку можно поставить на паузу и выложить её куда-нить на обменник, а ссылку запостить тут. Я думаю должно сработать.
(0013689)
zed (manager)
27-01-2014 16:29

Куда все пропали? Жду логов от дебажной сборки из старого аттача.
(0013696)
zed (manager)
29-01-2014 16:34

Словил я его. Висело в WaitForMultipleObjects из-за логической ошибки использования семафора.
(0013697)
vdemidov (manager)
29-01-2014 19:04

Спасибо. Теперь, когда проблема найдена, она кажется очевидной, но вот поди ж ты - сколько времени понадобилось что бы ее выловить.

- Users who viewed this issue
User List Anonymous (5976x), k-dmitriy (1x)
Total Views 5977
Last View 29-03-2024 06:49

- Issue History
Date Modified Username Field Change
28-12-2013 21:06 dmytro_ovdiienko New Issue
28-12-2013 22:00 dmytro_ovdiienko Note Added: 0013452
29-12-2013 08:32 gma Note Added: 0013453
29-12-2013 11:05 zed Relationship added related to 0001103
29-12-2013 11:14 zed Note Added: 0013456
29-12-2013 11:14 zed Status new => feedback
29-12-2013 14:21 dmytro_ovdiienko Note Added: 0013457
29-12-2013 14:21 dmytro_ovdiienko Status feedback => new
29-12-2013 19:18 gma Note Added: 0013462
29-12-2013 19:19 gma Note Edited: 0013462 View Revisions
29-12-2013 19:21 gma Note Added: 0013463
30-12-2013 06:09 zed Note Added: 0013465
30-12-2013 13:29 Papazol Note Added: 0013468
30-12-2013 16:26 gma Note Added: 0013469
30-12-2013 22:11 Papazol Note Added: 0013470
31-12-2013 05:24 zed Note Added: 0013471
31-12-2013 07:47 Papazol Note Added: 0013472
31-12-2013 11:26 zed Note Deleted: 0013462
31-12-2013 11:26 zed Note Deleted: 0013463
31-12-2013 11:26 zed Note Deleted: 0013465
31-12-2013 11:26 zed Note Deleted: 0013468
31-12-2013 11:26 zed Note Deleted: 0013469
31-12-2013 11:27 zed Note Deleted: 0013470
31-12-2013 11:27 zed Note Deleted: 0013471
31-12-2013 11:27 zed Note Deleted: 0013472
31-12-2013 11:28 zed Note Added: 0013474
31-12-2013 11:32 dmytro_ovdiienko Note Added: 0013475
31-12-2013 11:41 zed Note Added: 0013477
31-12-2013 11:56 vdemidov Note Added: 0013478
10-01-2014 23:46 dmytro_ovdiienko Note Added: 0013533
11-01-2014 08:03 gma Note Added: 0013535
11-01-2014 08:10 zed Note Added: 0013536
12-01-2014 14:38 zed Note Added: 0013549
12-01-2014 15:13 zed Note Added: 0013550
12-01-2014 15:13 zed Note Edited: 0013550 View Revisions
12-01-2014 17:07 gma Note Added: 0013555
12-01-2014 17:09 zed Note Added: 0013556
12-01-2014 17:44 zed Relationship added related to 0002312
12-01-2014 17:58 zed Note Added: 0013557
12-01-2014 18:03 dmytro_ovdiienko Note Added: 0013558
12-01-2014 18:13 zed Note Added: 0013559
12-01-2014 18:15 dmytro_ovdiienko Note Added: 0013560
12-01-2014 18:20 zed Note Added: 0013561
12-01-2014 18:22 dmytro_ovdiienko Note Added: 0013562
12-01-2014 18:24 dmytro_ovdiienko Note Added: 0013563
12-01-2014 18:24 zed Note Added: 0013564
12-01-2014 18:24 dmytro_ovdiienko Note Edited: 0013563 View Revisions
12-01-2014 19:23 dmytro_ovdiienko Note Added: 0013565
12-01-2014 19:23 dmytro_ovdiienko File Added: http1.log.zip
12-01-2014 19:24 zed Note Added: 0013566
12-01-2014 19:25 dmytro_ovdiienko Note Added: 0013567
12-01-2014 19:26 dmytro_ovdiienko Note Added: 0013568
12-01-2014 19:28 dmytro_ovdiienko Note Added: 0013569
12-01-2014 19:41 zed Note Added: 0013570
12-01-2014 19:42 zed Note Added: 0013571
12-01-2014 19:45 zed Note Added: 0013572
12-01-2014 19:59 zed Note Added: 0013573
12-01-2014 19:59 zed Note Edited: 0013573 View Revisions
12-01-2014 20:34 dmytro_ovdiienko Note Added: 0013574
12-01-2014 20:36 dmytro_ovdiienko Note Added: 0013575
12-01-2014 20:38 dmytro_ovdiienko Note Edited: 0013575 View Revisions
12-01-2014 20:41 dmytro_ovdiienko File Added: sas-osm.7z
12-01-2014 21:06 zed Note Added: 0013576
12-01-2014 21:08 dmytro_ovdiienko Note Added: 0013577
12-01-2014 21:10 dmytro_ovdiienko Note Added: 0013578
12-01-2014 21:10 dmytro_ovdiienko Note Edited: 0013578 View Revisions
12-01-2014 21:10 dmytro_ovdiienko Note Edited: 0013578 View Revisions
12-01-2014 21:11 zed Note Added: 0013579
12-01-2014 21:13 dmytro_ovdiienko Note Added: 0013580
12-01-2014 21:16 zed Note Added: 0013581
12-01-2014 21:21 dmytro_ovdiienko Note Added: 0013582
12-01-2014 21:27 zed Note Added: 0013583
12-01-2014 21:30 dmytro_ovdiienko Note Added: 0013584
12-01-2014 21:37 zed Note Added: 0013585
12-01-2014 21:38 zed Note Edited: 0013585 View Revisions
12-01-2014 21:53 zed Note Added: 0013586
12-01-2014 21:56 dmytro_ovdiienko Note Added: 0013587
12-01-2014 21:59 dmytro_ovdiienko Note Added: 0013588
12-01-2014 22:06 zed Note Added: 0013589
12-01-2014 22:07 dmytro_ovdiienko Note Added: 0013590
12-01-2014 22:07 zed Note Edited: 0013589 View Revisions
12-01-2014 22:11 zed Note Added: 0013591
13-01-2014 19:05 dmytro_ovdiienko Note Added: 0013593
13-01-2014 19:06 dmytro_ovdiienko Note Added: 0013594
13-01-2014 19:08 dmytro_ovdiienko Note Edited: 0013594 View Revisions
13-01-2014 19:56 zed File Added: SAS.DeBug.2301.7z
13-01-2014 20:03 zed Note Added: 0013595
13-01-2014 20:12 zed File Deleted: http1.log.zip
13-01-2014 20:12 zed File Deleted: sas-osm.7z
13-01-2014 20:14 dmytro_ovdiienko Note Added: 0013596
13-01-2014 20:15 zed Note Added: 0013597
13-01-2014 20:20 dmytro_ovdiienko Note Added: 0013598
13-01-2014 20:28 zed Note Added: 0013599
13-01-2014 23:49 dmytro_ovdiienko Note Added: 0013600
13-01-2014 23:53 dmytro_ovdiienko Note Added: 0013601
14-01-2014 00:12 dmytro_ovdiienko Note Added: 0013602
14-01-2014 00:29 dmytro_ovdiienko Note Edited: 0013602 View Revisions
14-01-2014 08:54 dmytro_ovdiienko Note Edited: 0013602 View Revisions
14-01-2014 08:54 dmytro_ovdiienko Note Edited: 0013602 View Revisions
14-01-2014 09:08 vdemidov Note Added: 0013605
14-01-2014 09:19 zed Note Added: 0013607
14-01-2014 09:23 zed Note Added: 0013608
14-01-2014 09:53 zed Note Added: 0013610
14-01-2014 10:11 vdemidov Note Added: 0013611
14-01-2014 10:14 zed Note Added: 0013612
14-01-2014 10:20 dmytro_ovdiienko Note Added: 0013613
14-01-2014 10:28 dmytro_ovdiienko Note Added: 0013614
14-01-2014 10:32 zed Note Added: 0013615
14-01-2014 10:48 vdemidov Note Added: 0013616
14-01-2014 10:50 zed Note Added: 0013617
14-01-2014 11:40 vdemidov Note Added: 0013618
14-01-2014 11:41 zed Note Added: 0013619
14-01-2014 11:50 vdemidov Note Added: 0013620
14-01-2014 11:51 zed Note Added: 0013621
14-01-2014 12:49 dmytro_ovdiienko Note Added: 0013623
14-01-2014 13:04 zed Note Added: 0013624
14-01-2014 13:30 dmytro_ovdiienko Note Added: 0013625
14-01-2014 13:38 zed Note Added: 0013626
15-01-2014 08:40 gma Note Added: 0013627
15-01-2014 09:40 vdemidov Note Added: 0013628
15-01-2014 10:27 zed Note Added: 0013629
15-01-2014 10:31 zed Note Added: 0013630
15-01-2014 10:39 zed Relationship added child of 0002307
15-01-2014 16:02 gma Note Added: 0013631
15-01-2014 16:40 zed Note Added: 0013633
16-01-2014 10:04 gma Note Added: 0013637
17-01-2014 21:50 nvet Note Added: 0013644
18-01-2014 18:44 zed Note Added: 0013646
18-01-2014 20:16 nvet Note Added: 0013648
18-01-2014 20:42 nvet Note Edited: 0013648 View Revisions
20-01-2014 08:27 zed Note Added: 0013651
27-01-2014 16:29 zed Note Added: 0013689
27-01-2014 16:29 zed Status new => feedback
29-01-2014 16:34 zed Note Added: 0013696
29-01-2014 16:38 zed Target Version => 140303
29-01-2014 16:38 zed Status feedback => resolved
29-01-2014 16:38 zed Fixed in Version => 140303
29-01-2014 16:38 zed Resolution open => fixed
29-01-2014 16:38 zed Assigned To => zed
29-01-2014 19:04 vdemidov Note Added: 0013697



Copyright © 2007 - 2024 SAS.Planet Team