| Notes | 
	| 
 | 
	|  | 
		
			| Вот опять залипло. "Queue: 0". И почемуто только OSM MAPNIK и Mapsurfer. Слои Bing или OSM CycleMap не глючат. Перезапуск программы решает проблему. |  | 
	| 
 | 
	| 
		
			| (0013453) |  
			| gma |  
			| 29-12-2013 08:32 |  | 
		
			| Аналогично. Всё собирался создать инц., да грешил на свою машину. Если достаточно долго (мин. 5--10) сёрфить по любой карте -- она сначала начинает тормозить, а потом перестаёт скачиваться вовсе. При этом загрузка по области (если запущена параллельно) продолжается, как ни в чём не бывало. Замечено в течение последнего года на разных версиях, в т.ч. ночнушках. Перезагрузка помогает всегда. Win-vistahome.
 |  | 
	| 
 | 
	| 
		
			| (0013456) |  
			| zed |  
			| 29-12-2013 11:14 |  | 
		
			| Проверьте воспроизводимость на текущей ночнушке. |  | 
	| 
 | 
	|  |  | 
	| 
 | 
	| 
		
			| (0013474) |  
			| zed |  
			| 31-12-2013 11:28 |  | 
		
			| У меня не воспроизводится. Можно по шагам, на чистой ночнушке? |  | 
	| 
 | 
	|  | 
		
			| Сложно объяснить... Просто выбираю OSM MAPNIK и дергаю карту туда сюда на монике с разрешением 1680*1080. В какойто момент карта перестает загружаться. Переключаюсь на mapsurfer. Опять дергаю туда-сюда. И эта зависает. Переключение опять на MAPNIK н помогает. 
 Может сделать каокй-то билд, к которому можно было бы подключиться дебагером и получить дамп? А дамп потом можно было бы посмотреть у тебя на машине.
 |  | 
	| 
 | 
	| 
		
			| (0013477) |  
			| zed |  
			| 31-12-2013 11:41 |  | 
		
			| В ночнушке идёт SASPlanet.Debug.exe который ловит ошибки, но если там что-то тихо-мирно просто висит, то тут мало что поможет. 
 Раз проблема только на OSM, наверное имеет смысл сделать дамп запросов на сервер любым снифером. Может там что-то крайне неожиданное прилетает от сервера и сокет просто остаётся в подвешенном состоянии. И можно попробовать в zmp ограничить или наоборот увеличить число подключений к серверу (MaxConnectionsCount) и прописать в хидерах "Connection: Close".
 
 Но не факт, что проблема в http-стеке. Может просто глючит очередь или ещё в одном из тысячи возможных мест...
 |  | 
	| 
 | 
	|  | 
		
			| А еще, возможно просто есть отличие между отправляемым САС.Планетой запросом и запросом из браузера. И сервер по этой разнице начинает банить такие запросы. |  | 
	| 
 | 
	|  | 
		
			| Может какие-то логи добавить для отладки? |  | 
	| 
 | 
	| 
		
			| (0013535) |  
			| gma |  
			| 11-01-2014 08:03 |  | 
		
			| "У меня не воспроизводится. Можно по шагам, на чистой ночнушке?" вчерашняя 1400110 -- воспроизводится, м.б. чуть позже, чем на прошлогодних. По шагам: запускаю САС, выбираю карту (в моём случае это любые спутники, вчера тестировал на Imagery2) и стрелочками двигаю карту (z16, если важно) вверх, вниз, влево, вправо. Минут 5--7 всё летает, потом начинает подтормаживать, а минут через 15--20 от начала и вовсе встаёт (именно эта карта, которая тестировалась -- остальные поначалу помогают растормаживать и с ними всё нормально, а потом только другие и качаются). Принудительная загрузка конкретных тайлов (на правой кнопке) работает, т.е. тормоза не абсолютные, а только на сёрфинг. И, как я говорил выше, закачка по областям тоже работает нормально. |  | 
	| 
 | 
	| 
		
			| (0013536) |  
			| zed |  
			| 11-01-2014 08:10 |  | 
		
			| > и стрелочками двигаю карту (z16, если важно) вверх, вниз, влево, вправо Так может клинит именно это перемещение? Плавную анимацию отключать пробовали?
 |  | 
	| 
 | 
	| 
		
			| (0013549) |  
			| zed |  
			| 12-01-2014 14:38 |  | 
		
			| Да, есть такое-то странное поведение на этой карте. До полного "залипания" довести ситуацию не получилось, но то, что тайлы начинают качаться медленно и не все, это факт. Причём, все запросы ушедшие на сервер возвращаются с 200 ОК, но вот очередь тайлов может быстренько скатиться до 0 (с 32-х), скачав при этом всего несколько тайлов. |  | 
	| 
 | 
	| 
		
			| (0013550) |  
			| zed |  
			| 12-01-2014 15:13 |  | 
		
			| Понял почему счётчик слетает до нуля. Если загрузка тайлов очень медленная (по 15 сек. на тайл), то по TTL (30 сек.) этот поток будет успешно прибит и очередь обнулится. Но вопрос, почему эти тайлы начинают вдруг так медленно качаться, остаётся открытым. 
 
 |  | 
	| 
 | 
	| 
		
			| (0013555) |  
			| gma |  
			| 12-01-2014 17:07 |  | 
		
			| "Так может клинит именно это перемещение?" -- нет, программе равно, чем её перемещают, мышкой или клавой. "Плавную анимацию отключать пробовали?" -- не отключается. Там есть "Аним. при масштабировании" -- она у меня выключена по умолчанию. И есть "Движение по инерции" -- вот оно, будучи выключенным, всё равно продолжается. Вер: 140110.7793.
 Кстати, обратный счётчик показывает цены на яхты, но где-то не здесь. Впрочем, это отдельный баг и оформлять его нужно соотв. )
 |  | 
	| 
 | 
	| 
		
			| (0013556) |  
			| zed |  
			| 12-01-2014 17:09 |  | 
		
			| Со счётчиком всё в порядке. |  | 
	| 
 | 
	| 
		
			| (0013557) |  
			| zed |  
			| 12-01-2014 17:58 |  | 
		
			| В общем, полечил загадочное поведение 0002301:0013549, а по поводу снижения скорости загрузки, я без понятия. У меня это торможение наблюдается практически сразу после запуска (RAM-кэш + активная смена зума и позиции, не дожидаясь окончания загрузки тайлов). Но снифером видно, что все потоки качают, но сервер отдаёт очень медленно. Ну, или может это мы вдруг начинаем спать между приёмом пакетов - но с чего бы? Тем более, что при закачке того же гугла всё летает. |  | 
	| 
 | 
	|  | 
		
			| И после рестарта приложения все опять работает без тормозов. И выкачка региона тайлов, как говорит gma, работает нормально. Чем отлиается реализация выкачки региона и экрана? |  | 
	| 
 | 
	| 
		
			| (0013559) |  
			| zed |  
			| 12-01-2014 18:13 |  | 
		
			| > И после рестарта приложения все опять работает без тормозов. 
 Перезапуск не обязательное условие. Можно просто переключиться на другую карту и/или подождать некоторый таймаут, пока SAS не закроет все соединения с этим сервером или пока сервер не решит, что можно уже и не тормозить.
 
 > И выкачка региона тайлов, как говорит gma, работает нормально. Чем отлиается реализация выкачки региона и экрана?
 
 У меня эти вещи работают одинаково медленно. И реализация там ничем не отличается - закачка идёт через одну и туже очередь.
 |  | 
	| 
 | 
	|  | 
		
			| С перезапуском ты продолжаешь работать с той же картой. То есть, врядли это тормоза на стороне сервера. Можно посчитать задержку между прибытием пакета на сетевуху и появлением ее на экране. |  | 
	| 
 | 
	| 
		
			| (0013561) |  
			| zed |  
			| 12-01-2014 18:20 |  | 
		
			| А вот у меня, перезапуск не помогает. Только что проверил. Видно я сегодня за вечер уже порядком поднадоел серверу. 
 > Можно посчитать задержку между прибытием пакета на сетевуху и появлением ее на экране.
 Вы для начала, посчитайте скорость прибытия пакетов на сетевуху. Т.е. нужны убедительные доказательства, что это тормозит не сервер и что это не проявления своеобразного бана. А то, что в браузере всё работает - совсем не показатель. Там же куки и все дела, а тут - робот.
 |  | 
	| 
 | 
	|  | 
		
			| Дело в том, что скорость прибытия пакетов на сетевуху зависит от скорости их выкачки. Если приложение тормозит, то и на той стороне посылают с задержкой. |  | 
	| 
 | 
	|  | 
		
			| Ок. попробую посчитать скорость ответа на HTTP запрос 
 
 |  | 
	| 
 | 
	| 
		
			| (0013564) |  
			| zed |  
			| 12-01-2014 18:24 |  | 
		
			| Поставьте кэширующий прокси между SAS и сервером. Пускай прокси выкачивает без задержек, если у него получится и отдаёт тайлы SAS-у. |  | 
	| 
 | 
	|  | 
		
			| Похоже, тормозит именно SAS. Ответ от WEB сервера приходит сразу. А вот новые запросы SAS отправляет с задержкой. Ща выложу лог проксисервера и попробую поснифить. 
 Хм... может в системе не хватает ресурсов. Может надо стараться переиспользовать сокеты?
 |  | 
	| 
 | 
	| 
		
			| (0013566) |  
			| zed |  
			| 12-01-2014 19:24 |  |  | 
	| 
 | 
	|  | 
		
			| Вот к примеру залип на 3 сек начиная с "!-<12/01 21:11:25". |  | 
	| 
 | 
	|  | 
		
			| >Keep-Alive же? В логе видно, как выделяются постоянно новые ТЦП порты
 |  | 
	| 
 | 
	|  | 
		
			| Запись "!->12/01 21:11:27 [127.0.0.1:61011>3128] (t3 421) >Proxy in:7426 out:253 " похоже означает закрытие сокета на строне SAS.
 |  | 
	| 
 | 
	| 
		
			| (0013570) |  
			| zed |  
			| 12-01-2014 19:41 |  | 
		
			| > Ответ от WEB сервера приходит сразу Приход ответа, это не мгновенная операция в любом случае. И из ваших логов можно только увидеть, когда ответ начал приходить, но не видно, когда же он пришёл целиком. У меня некоторые тайлы по 20 секунд грузились и в снифере было хорошо видно, как приходят "пакеты".
 |  | 
	| 
 | 
	| 
		
			| (0013571) |  
			| zed |  
			| 12-01-2014 19:42 |  | 
		
			| > В логе видно, как выделяются постоянно новые ТЦП порты Значит виноват прокси. Через снифер порты не выделяются и я наблюдаю честный Keep-Alive (OSM MAPNIK).
 |  | 
	| 
 | 
	| 
		
			| (0013572) |  
			| zed |  
			| 12-01-2014 19:45 |  | 
		
			| И для тестов лучше в zmp прописать MaxConnectToServerCount=1 и в скрипте убрать генерирование a/b/c префиксов в url (и слать всегда, скажем, на "а"). |  | 
	| 
 | 
	| 
		
			| (0013573) |  
			| zed |  
			| 12-01-2014 19:59 |  | 
		
			| У меня, кстати, было опять начало качать быстро, но насёрфив около 800 тайлов оно таки начало тормозить. Хотя всё шло в один поток и с Keep-Alive. И после перезапуска SAS, оно хоть и начало ходить через другой порт, но всё так же медленно, с самого же первого тайла. 
 Так что тут (конкретно на карте OSM MAPNIK), SAS однозначно ни при чём.
 
 
 |  | 
	| 
 | 
	|  | 
		
			| Поймал зависон. Ваершарк показвыает, что никаких пакетов со стороны SAS не уходит. У мну WinXP SP3. |  | 
	| 
 | 
	|  | 
		
			| А через 58сек соединение с OSM закрылось. На попытки подвигать карту OSM никак не реагирует. Закрытие подключения инициировал OSM. 
 
 |  | 
	| 
 | 
	| 
		
			| (0013576) |  
			| zed |  
			| 12-01-2014 21:06 |  | 
		
			| > никаких пакетов со стороны SAS не уходит Это скорее всего баг с очисткой очереди 0002312 - нужно проверять в завтрашней ночнушке.
 
 > На попытки подвигать карту OSM никак не реагирует
 Т.е. не отвечает на запросы или SAS их не шлёт?
 |  | 
	| 
 | 
	|  | 
		
			| SAS не завис. На мышь и клаву реагирует. Просто не шлет запросы на веб сервер. |  | 
	| 
 | 
	|  | 
		
			| А этот баг с очисткой очереди, как-то объясняет, почему, если переключиться на другую карту, то она работает? 
 
 |  | 
	| 
 | 
	| 
		
			| (0013579) |  
			| zed |  
			| 12-01-2014 21:11 |  | 
		
			| Да. Но этот баг на смещение карты не завязан, т.е. закачка должна была возобновиться. |  | 
	| 
 | 
	|  | 
		
			| Я ждал минуты 4-5. Закачка не возобновилась. |  | 
	| 
 | 
	| 
		
			| (0013581) |  
			| zed |  
			| 12-01-2014 21:16 |  | 
		
			| Она должна была начаться мгновенно после смещения карты (если конечно в кэше тайлов нету). 
 А по логу (sas-osm) я никаких замечаний не вижу.
 |  | 
	| 
 | 
	|  | 
		
			| > Она должна была начаться мгновенно после смещения карты (если конечно в кэше тайлов нету). 
 Я переключил SAS в режим Internet. Кеш не должен был использоваться. Но по ощущениям, SAS еще кеширует в памяти. Еще я в ZMP добавил MaxConnectToServerCount=1, но подключений было 3шт (судя по pcap файлу)
 
 > А по логу (sas-osm) я никаких замечаний не вижу.
 Ага. Ничего необычного. Но на последнем тайле все наглухо остановилоась и SAS больше не пробовал что-либо качать.
 |  | 
	| 
 | 
	| 
		
			| (0013583) |  
			| zed |  
			| 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
 |  | 
	| 
 | 
	|  | 
		
			| Предлагаю нашпиговать SAS логами и выдать мне на растерзание. |  | 
	| 
 | 
	| 
		
			| (0013585) |  
			| zed |  
			| 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 |  
			| 12-01-2014 21:53 |  | 
		
			| Кстати, в режиме Интернет, оно пишет в кэш и перезаписывает существующие тайлы. Возможно каким-то боком зависает запись в кэш, а все потоки его дружно ждут. |  | 
	| 
 | 
	|  | 
		
			| Это объясняет, почему другие карты продолжают работать? |  | 
	| 
 | 
	|  | 
		
			| Для включения RAM Cache нужно добавить в zmp только это? 
 UseMemCache=1
 |  | 
	| 
 | 
	| 
		
			| (0013589) |  
			| zed |  
			| 12-01-2014 22:06 (edited on: 12-01-2014 22:07)
 |  | 
		
			| > Это объясняет, почему другие карты продолжают работать? Зависание кэша? Естественно - у каждой карты свой кэш и своя качалка.
 
 > Для включения RAM
 Для включения - достаточно в гуе зайти в настройки карты (Ctr+Alt+P) и выбрать "Тип кэша - ОЗУ". А в zmp можно уменьшить MemCacheTTL до 15000 (15 секунд) или количество кэшируемых тайлов. Но это уже на усмотрение.
 
 
 |  | 
	| 
 | 
	|  |  | 
	| 
 | 
	| 
		
			| (0013591) |  
			| zed |  
			| 12-01-2014 22:11 |  | 
		
			| И вдогонку, по тем же 3 кнопкам Ctr+Alt+P, в самом низу есть надпись: "Разрешено скачивание" и в поле - "Да". Так вот, когда оно перестанет качать, загляните сюда, возможно оно там что-то интересное напишет. |  | 
	| 
 | 
	|  | 
		
			| Воспроизвел на SAS.Planet.Nightly.140113.7797. Кеш - RAM. Когда зависло, размер очерели == 0 и при перемещении карты не увеличивался. Похоже, что SAS не добавляет тайлы в очередь. |  | 
	| 
 | 
	|  | 
		
			| Мне кажется, где-то увеличивается счетчик подключения к серверу и не декрементируется. 
 
 |  | 
	| 
 | 
	| 
		
			| (0013595) |  
			| zed |  
			| 13-01-2014 20:03 |  | 
		
			| Приложил сборку для тестов. Запустить Dbgview.exe, затем SASPlanet.exe, добиться зависания и сбросить лог дебагера сюда. Дебажные сообщения выводятся только для одного класса TUiTileDownload, на всякий случай в архиве исходник этого класса, где видно когда и какие сообщения выводятся (и какие вообще могут быть). Сообщения с текстом "Nothing to do", кроме "Nothing to do: if VNeedDownload" когда тайлы есть в кэше, следует рассматривать как крайне подозрительные.
 |  | 
	| 
 | 
	|  | 
		
			| Во время загрузки в лог что-то должно выводиться? Я запустил, скачал несколко тайлов, но ничего не вижу в dbgview |  | 
	| 
 | 
	| 
		
			| (0013597) |  
			| zed |  
			| 13-01-2014 20:15 |  | 
		
			| Да, должны бежать строчки очень активно. |  | 
	| 
 | 
	|  | 
		
			| Не пишет. Моя программа пишет, а SAS - не пишет. 
 #include <Windows.h>
 
 int main() {
 OutputDebugString("123\n");
 }
 |  | 
	| 
 | 
	| 
		
			| (0013599) |  
			| zed |  
			| 13-01-2014 20:28 |  | 
		
			| Вот блин :( Вариант - скачать виртуалку http://yadi.sk/d/bZ3bEBzMC2biN и попробовать запустить там. Тем более, там вы при желании сможете запустить SAS прямо под отладчиком и посмотреть как минимум на имена потоков и их наличие в момент бага. Ну и брекпоинты, тоже полезная вещь.
 |  | 
	| 
 | 
	|  | 
		
			| файлы от 27.03.2013.. это точно последнее? |  | 
	| 
 | 
	|  | 
		
			| У меня есть CBuilder6. Дай плз сурсы от SAS.Planet.Nightly.140113.7797 |  | 
	| 
 | 
	|  | 
		
			| Нашел сурсы. Что выполняется при перемещении карты? Где бряки ставить?
 
 
 |  | 
	| 
 | 
	|  | 
		
			| Мне кажется вы фигней занимаетесь. В первую очередь нужно проверить где затык: в сервере, подсистеме загрузки или в загрузчике видимой области. Последний отсекается очень просто. После того как тайлы качаться перестали нажимаем Ctrl-A и   запускаем скачивание текущего экрана как области. Если качается, то ошибка именно в загрузке видимой области, если нет, то в подсистеме загрузки. |  | 
	| 
 | 
	| 
		
			| (0013607) |  
			| zed |  
			| 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 |  
			| 14-01-2014 09:23 |  | 
		
			| >нужно проверить где затык: в сервере, подсистеме загрузки или в загрузчике видимой области Сервер уже исключили. И очень большое подозрение именно на загрузчика видимой области (читай второе сообщение 0002301:0013453), именно на него (TUiTileDownload) я и натыкал дебажных сообщений, чтобы понять, где там может быть затык.
 
 У себя я так и не смог воспроизвести, поэтому вся надежда на dmytro_ovdiienko
 |  | 
	| 
 | 
	| 
		
			| (0013610) |  
			| zed |  
			| 14-01-2014 09:53 |  | 
		
			| dmytro_ovdiienko И да, если будете расставлять бряки в отладчике, то в папке Maps лучше оставить только одну карту, иначе в OnPosChange будут прилетать мусорные сообщения от всех остальных карт.
 |  | 
	| 
 | 
	|  | 
		
			| >Сервер уже исключили. И очень большое подозрение именно на загрузчика видимой области (читай второе сообщение 0002301:0013453), именно на него (TUiTileDownload) я и натыкал дебажных сообщений, чтобы понять, где там может быть затык. Ну так я и описал способ в этом убедиться на 100% даже без отладчика.
 |  | 
	| 
 | 
	| 
		
			| (0013612) |  
			| zed |  
			| 14-01-2014 10:14 |  | 
		
			| Ну убедились, а дальше что? Как баг найти? |  | 
	| 
 | 
	|  | 
		
			| Ок. Я сначала еще раз проверю, что поблема в выкачке. Потом буду дебажить. Хотя не уверен, что у меня получится это на виртуалке. На Win7, например, почему-то не воспроизводится. Может, это какаято особенность моей ОС. |  | 
	| 
 | 
	|  | 
		
			| И мне нужны исходники того кода, с которым собирался Дебаг, который мне выдал zed. |  | 
	| 
 | 
	| 
		
			| (0013615) |  
			| zed |  
			| 14-01-2014 10:32 |  | 
		
			| Я уже объяснил, как получить сорцы 0002301:0013607, а единственное отличие моего дебага - изменения в u_UiTileDownload.pas, который я также приложил в аттаче. Так что заменив его, вы получите идентичную копию сборки. |  | 
	| 
 | 
	|  | 
		
			| > Ну убедились, а дальше что? Как баг найти? Точно убедились? Я не уверен, что баг именно в TUiTileDownload. Не так уж много там кода.
 |  | 
	| 
 | 
	| 
		
			| (0013617) |  
			| zed |  
			| 14-01-2014 10:50 |  | 
		
			| Тут одно из двух: либо прилетает OnPosChange и где-то в TUiTileDownload не обрабатывается, либо не прилетает и тогда проблема выше. |  | 
	| 
 | 
	|  | 
		
			| > Тут одно из двух: либо прилетает OnPosChange и где-то в TUiTileDownload не обрабатывается, либо не прилетает и тогда проблема выше. Если бы это было бы так, то не было бы такого:
 > Вот опять залипло. "Queue: 0".
 |  | 
	| 
 | 
	| 
		
			| (0013619) |  
			| zed |  
			| 14-01-2014 11:41 |  | 
		
			| Именно такое и было бы :) |  | 
	| 
 | 
	|  | 
		
			| Я про "либо не прилетает" |  | 
	| 
 | 
	| 
		
			| (0013621) |  
			| zed |  
			| 14-01-2014 11:51 |  | 
		
			| Да в обоих случаях счётчик будет стоять на нуле. Ты посмотри, где он увеличивается. |  | 
	| 
 | 
	|  | 
		
			| Если бы не прилетало событие, тогда другие карты тоже бы не работали. Верно? |  | 
	| 
 | 
	| 
		
			| (0013624) |  
			| zed |  
			| 14-01-2014 13:04 |  | 
		
			| Если карта вдруг не отписалась от уведомлений, то да. Вот и выходит, что затык в TUiTileDownload. |  | 
	| 
 | 
	|  |  | 
	| 
 | 
	| 
		
			| (0013626) |  
			| zed |  
			| 14-01-2014 13:38 |  | 
		
			| Отписка происходит только в момент уничтожения карты (TUiTileDownload.Destroy), поэтому, практически - нет. |  | 
	| 
 | 
	| 
		
			| (0013627) |  
			| gma |  
			| 15-01-2014 08:40 |  | 
		
			| "После того как тайлы качаться перестали нажимаем Ctrl-A и запускаем скачивание текущего экрана как области" -- Дождался затыка, запустил закачку области -- пошла на ура на хорошей скорости. Экран после этого всё равно не завёлся. |  | 
	| 
 | 
	|  | 
		
			| Имхо чем пытаться починить TUiTileDownload лучше сразу его переписать полностью. То есть завести массивчик отправленных запросов и итератор тайлов как поля объекта. Убрать оттуда отдельный поток для каждой карты, а завести один поток на все карты, который будет дергать активные. Выкинуть тот семафор нафиг. И тд. |  | 
	| 
 | 
	| 
		
			| (0013629) |  
			| zed |  
			| 15-01-2014 10:27 |  | 
		
			| >Дождался затыка, запустил закачку области Удалось ли собрать дополнительную информацию при помощи dbgview во время затыка?
 
 >Имхо чем пытаться починить TUiTileDownload лучше сразу его переписать полностью
 Поскольку неизвестно в чём баг, то нет никаких гарантий, что ты его не перенесёшь в новую реализацию. Сейчас по твоим словам реализация простая до предела и глючить там нечему (а оно таки глючит), но предлагаешь усложнить реализацию на порядок, в надежде избавиться от глюка. Где логика? Хотя, несомненно, ты можешь попробовать всё переписать как запланировал, возможно и поможет. Но dmytro_ovdiienko и gma я бы попросил продолжить поиск бага в текущей реализации, а не ждать нового движка от vdemidov.
 
 Мне кажется, что OnPosChange должен прилетать и скорее всего мы стартуем поток, но где-то в if/then с завидным постоянством выходим в отсутствующий else блок (куда я напихал OutpuDebugString) и ничего не делаем. И это может быть проблема не собственно TUiTileDownload, а каких-то внешних факторов.
 |  | 
	| 
 | 
	| 
		
			| (0013630) |  
			| zed |  
			| 15-01-2014 10:31 |  | 
		
			| gma >Экран после этого всё равно не завёлся
 И небольшое уточнение терминологии: "затык" это когда карта перестаёт качать и Queue: 0? Показания счётчика в этом случае очень важно.
 |  | 
	| 
 | 
	| 
		
			| (0013631) |  
			| gma |  
			| 15-01-2014 16:02 |  | 
		
			| "И небольшое уточнение терминологии: "затык" это когда карта перестаёт качать и Queue: 0? Показания счётчика в этом случае очень важно" -- Да, когда перестаёт качать. Про счётчик я выше уже говорил, что в норме! он показывает количество лун  у марса, иногда у земли, но это число ни от чего не зависит. Сегодня на работе скачал Dbw и попробовал добиться результата с ним -- ничего не вышло, качает как миленькая, дошло до почти трёх тысяч (почти час качал) и тут рабочее время кончилось. Но раньше я ОСМ такими объёмами никогда не качал, да и вообще настройки у меня сильно отличаются, не знаю, важно ли это.
 |  | 
	| 
 | 
	| 
		
			| (0013633) |  
			| zed |  
			| 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 |  
			| 16-01-2014 10:04 |  | 
		
			| "если включены 2 карты, то счётчик будет крутиться возле 64-х и не выше" -- включена как правило одна карта, лун у марса две, у земли -- одна, вот примерно эти числа он мне и показывает чаще всего, иногда 7, 4 или другое что, но логики в его показаниях я не могу найти. В скачанном дебаге САСовый счётчик показывал всё правильно, у меня он может полчаса показывать единицу, независимо от происходящего на экране. |  | 
	| 
 | 
	| 
		
			| (0013644) |  
			| nvet |  
			| 17-01-2014 21:50 |  | 
		
			| Остановка закачки в Ui может происходить на разных картах.У меня например наблюдается для спутника Гугла после скачки нескольких тысяч тайлов. После остановки, под отладчиком нашел "подозрительные" места в коде:
 -в модуле TBackgroundTask в процедуре Execute в строке 134 переменная VOperatonID принимает значение 0.
 -в результате в модуле TUiTileDownload в процедуре DoProcessDownloadRequests в строке 377,378 происходит обход кода закачки.
 Если закачка идет, VOperatonID имеет значение не равное 0.
 |  | 
	| 
 | 
	| 
		
			| (0013646) |  
			| zed |  
			| 18-01-2014 18:44 |  | 
		
			| > в модуле TBackgroundTask в процедуре Execute в строке 134 переменная VOperatonID принимает значение 0 
 Значит поток был только что создан и это первая задача. 0 - абсолютно нормальное значение.
 
 > в результате в модуле TUiTileDownload в процедуре DoProcessDownloadRequests в строке 377,378 происходит обход кода закачки
 
 Имеется в виду проверка "if ACancelNotifier.IsOperationCanceled(AOperationID) then"? Первый раз может и сработать, если карта движется и прежде чем мы дошли до этой строчки у нас уже успела стартануть новая задача (должны были прилететь вот сюда, отменить старую задачу и увеличить счётчик следующей операции).
 
 И обновите свою версию исходников, сейчас на строках 377,378 выполняются совсем другие операции.
 |  | 
	| 
 | 
	| 
		
			| (0013648) |  
			| nvet |  
			| 18-01-2014 20:16 (edited on: 18-01-2014 20:42)
 |  | 
		
			| > Имеется в виду проверка 
 Да, эта самая проверка(нов 407 строка).
 Попробую повторить остановку на свежей ночной сборке.
 Если будет, то и на обновленных исходниках.
 
 Проверка на версии SAS 140118.7798
 Карта спутник гугл.Остановка произошла на 1926 тайлах,осталось 0.
 Загрузка по контекстному меню происходит, счетчик при этом увеличивается на 1(1927 и т.д.).
 Перемещения карты мышкой и стрелками к загрузке не приводят,очередь загрузки стоит на нуле во время перемещений.
 
 
 |  | 
	| 
 | 
	| 
		
			| (0013651) |  
			| zed |  
			| 20-01-2014 08:27 |  | 
		
			| Если кому-то удастся воспроизвести баг на виртуалке под дебагером, то эту виртуалку можно поставить на паузу и выложить её куда-нить на обменник, а ссылку запостить тут. Я думаю должно сработать. |  | 
	| 
 | 
	| 
		
			| (0013689) |  
			| zed |  
			| 27-01-2014 16:29 |  | 
		
			| Куда все пропали? Жду логов от дебажной сборки из старого аттача. |  | 
	| 
 | 
	| 
		
			| (0013696) |  
			| zed |  
			| 29-01-2014 16:34 |  | 
		
			| Словил я его. Висело в WaitForMultipleObjects из-за логической ошибки использования семафора. |  | 
	| 
 | 
	|  | 
		
			| Спасибо. Теперь, когда проблема найдена, она кажется очевидной, но вот поди ж ты - сколько времени понадобилось что бы ее выловить. |  |