SASGIS - SACS.Планета
View Issue Details
0001951SACS.Планета[All Projects] Багpublic09-06-2013 06:3009-08-2013 15:13
Papazol 
vasketsov 
normalblockhave not tried
closedfixed 
WindowsXPProfessional SP3
 
130803 
0001951: Вылет сразу после загрузки из-за попытки открыть хранилище неизвестного типа
Версия 130515.406. Сразу после загрузки возникает AV.
No tags attached.
related to 0000127assigned Garl Доработка карты (ZMP) Добавить всплывающую подсказку при наведении мыши на объекты Яндекс.Народная карта, аналогично объектам Wikimapia 
related to 0001872resolved zed SAS.Планета Добавить возможность сохранять тайлы разных версий в кэш Беркли 
? SASPlanet.Debug_1.elf (43,554) 10-06-2013 07:12
http://www.sasgis.org/mantis/file_download.php?file_id=1374&type=bug
Issue History
09-06-2013 06:30PapazolNew Issue
09-06-2013 06:30PapazolFile Added: SASPlanet.Debug.elf
09-06-2013 14:23vasketsovNote Added: 0011579
09-06-2013 14:23vasketsovAssigned To => vasketsov
09-06-2013 14:23vasketsovStatusnew => assigned
09-06-2013 14:23vasketsovStatusassigned => feedback
10-06-2013 07:12PapazolFile Added: SASPlanet.Debug_1.elf
10-06-2013 07:13PapazolNote Added: 0011588
10-06-2013 07:13PapazolStatusfeedback => assigned
10-06-2013 08:51vasketsovNote Added: 0011590
10-06-2013 09:04zedNote Added: 0011592
10-06-2013 09:07vasketsovNote Added: 0011593
10-06-2013 09:09vasketsovNote Edited: 0011593bug_revision_view_page.php?bugnote_id=11593#r5438
10-06-2013 09:11vasketsovNote Edited: 0011593bug_revision_view_page.php?bugnote_id=11593#r5439
10-06-2013 09:40PapazolNote Added: 0011594
10-06-2013 09:43PapazolNote Edited: 0011594bug_revision_view_page.php?bugnote_id=11594#r5441
10-06-2013 09:44zedNote Added: 0011596
10-06-2013 09:44vasketsovNote Added: 0011597
10-06-2013 09:49zedNote Added: 0011598
10-06-2013 10:00vasketsovNote Added: 0011601
10-06-2013 10:30vasketsovNote Added: 0011607
10-06-2013 10:32vasketsovSummaryВылет сразу после загрузки => Вылет сразу после загрузки из-за попытки открыть хранилище неизвестного типа
10-06-2013 10:33vasketsovFile Deleted: SASPlanet.Debug.elf
10-06-2013 10:37PapazolNote Added: 0011609
10-06-2013 18:41vasketsovRelationship addedrelated to 0000127
10-06-2013 18:42vasketsovRelationship addedparent of 0001872
10-06-2013 18:42vasketsovRelationship deletedparent of 0001872
10-06-2013 18:42vasketsovRelationship addedrelated to 0001872
11-06-2013 06:41PapazolNote Added: 0011630
11-06-2013 06:42PapazolNote Edited: 0011630bug_revision_view_page.php?bugnote_id=11630#r5451
11-06-2013 07:02vasketsovNote Added: 0011631
11-06-2013 07:04vasketsovNote Edited: 0011631bug_revision_view_page.php?bugnote_id=11631#r5453
11-06-2013 14:44PapazolNote Added: 0011650
11-06-2013 21:30vasketsovNote Added: 0011652
12-06-2013 18:43PapazolNote Added: 0011660
12-06-2013 19:03vasketsovNote Added: 0011661
13-06-2013 11:11vasketsovStatusassigned => resolved
13-06-2013 11:11vasketsovFixed in Version => .Nightly
13-06-2013 11:11vasketsovResolutionopen => fixed
09-08-2013 14:59vasketsovFixed in Version.Nightly => 130803
09-08-2013 15:13vasketsovStatusresolved => closed

Notes
(0011579)
vasketsov   
09-06-2013 14:23   
На следующей ночнушке либо не будет ошибки, либо будет более понятно что к чему )))
(0011588)
Papazol   
10-06-2013 07:13   
Новый эльф приложен.
(0011590)
vasketsov   
10-06-2013 08:51   
Такое ощущение, что SACS пытается открыть неизвестный тип кэша, ибо я не могу представить другую ситуацию, при которой была бы такая ошибка.
Немного подправил, в следующий раз будет информация о коде типа кэша и чуть раньше.
(0011592)
zed   
10-06-2013 09:04   
Наверняка 61 - версионный Беркли.
(0011593)
vasketsov   
10-06-2013 09:07   
(edited on: 10-06-2013 09:11)
Есть ещё один вариант: если в zmp у параметра Ext "неизвестное" расширение (например, Ext=.json), хранилище не создаётся, и будет именно такая ошибка.
зы. После того как я перенёс проверку на момент создания хранилища, я словил такую ошибку для тестовой карты векторного НЯК:
VMainContentType := FContentTypeManager.GetInfoByExt(AConfig.TileFileExt);
if VMainContentType <> nil then begin
 // тут создаётся хранилище

(0011594)
Papazol   
10-06-2013 09:40   
(edited on: 10-06-2013 09:43)
>Наверняка 61 - версионный Беркли.<
Он самый. У меня спутник Google - версионный. Поэтому программа сразу ломится его открывать. Я подменил в ini его GUID на другой - стало работать. Но как только пытаешься подсунуть карту с версионным кэшем - вылет.

(0011596)
zed   
10-06-2013 09:44   
Угу, просто нужна обработка неизвестных типов кэша и прочих ошибок создания хранилищ.
(0011597)
vasketsov   
10-06-2013 09:44   
Для JSON я сделал пустой фейковый парсер - так что пока мои игрища выпиливать не придётся ))
А вот исключать 61 смысла не вижу, как и бросаться впиливать его, как и исправлять по месту.

Нужно какое-то общее решение, чтобы кэши неизвестного типа вообще даже не пытались открываться в сасе.
(0011598)
zed   
10-06-2013 09:49   
>как и бросаться впиливать его
Я его сам впилю, когда доведу до логического завершения в SAS.
(0011601)
vasketsov   
10-06-2013 10:00   
>когда доведу до логического завершения
Да я про то, что проблема-то вообще не в его отсутствии ))).
Перфразируя, отсутствие 61 - это повод, а не причина.
Причина ошибки в том, что сас пытается открывать неизвестные типы кэшей.
И в общем-то лечить надо несколько раньше, чем создание такого неизвестного хранилища. Пока не придумал, где именно.

зы. Кстати, если при создании хранилища сработает ассерт, этот слой или карта не попадут в список в главной форме. То есть после переноса ассерта к созданию хранилища, теперь только будет инфа об ошибке, и прога дальше будет запускаться. Так что в первом приближении ошибки времени создания хранилища хотя бы так, но обрабатываются.
(0011607)
vasketsov   
10-06-2013 10:30   
В общем, если я правильно понимаю, пока что будет работать так:
1. При старте пытаемся создать даже неизвестные хранилища.
2. Если обломаемся - будет инфа об ошибке, а ошибочная карта не залетит в список.
3. Если не получится включить карту, которая была активна в момент прошлого выключения - будет включена самая первая карта, если вообще ни одной карты - будет ругань, что без карт, и выход.

То есть работа будет возможна, но будет при запуске показ сообщений об ошибке (по числу карт с неизвестным типом кэша).
Если такое устроит в качестве временного решения - возьмём паузу на подумать.
(0011609)
Papazol   
10-06-2013 10:37   
>будет инфа об ошибке<>будет ругань, что без карт<
Это главное, в остальном всё годится.
(0011630)
Papazol   
11-06-2013 06:41   
(edited on: 11-06-2013 06:42)
Это уже сборка 426.
При запуске программы выдаются мессаджи:
61 at Yandex_sat_DB as .jpg (C:\sas_nightly_ext\sas.src.ext\u_MapType.pas, line 491)
61 at Google_sat_version as .jpg (C:\sas_nightly_ext\sas.src.ext\u_MapType.pas, line 491)
61 at Google_sat_DB as .jpg (C:\sas_nightly_ext\sas.src.ext\u_MapType.pas, line 491)
Ну, в общем-то, понятно, о чём речь :)
А вот это что значит:
5 at as .jpg (C:\sas_nightly_ext\sas.src.ext\u_MapType.pas, line 491)

(0011631)
vasketsov   
11-06-2013 07:02   
(edited on: 11-06-2013 07:04)
>При запуске программы выдаются мессаджи
На самом деле я могу вообще не показывать эту ругань, просто молча вдруг пропадут из программы некоторые карты ))

>5 at as .jpg
Да в общем-то то же самое - какой-то облом с созданием хранилища. 5 - это прямой доступ к кэшу GE через DLL. Просто NameInCache пустой (но причина скорее всего не в этом). Вопрос конечно интересный.
У меня тоже есть такой zmp, и тоже с пустым NameInCache. В этом случае должно подхватываться значение из настроек программы. Оно тоже пустое?

(0011650)
Papazol   
11-06-2013 14:44   
Пустое. Если в zmp прописать NameInCache=Empty, всё равно ругается. Я просто удалил этот zmp, так как им не пользуюсь.
А нельзя ли ругань не удалять, а сделать её понятной пользователю? Ну, типа как про дублирующиеся GUID'ы?
(0011652)
vasketsov   
11-06-2013 21:30   
>сделать её понятной пользователю?
Конечно можно, надо только понять, что выводить в сообщении.
А то если вывести GUID - пользы будет мало, карты в сасе не будет видно, придётся перебирать все zmp.
(0011660)
Papazol   
12-06-2013 18:43   
Можно сказать, что в наборе содержится одна или несколько карт с неподдерживаемым типом кэша, и они будут исключены из выпадающего списка. Называть, какие именно это карты, не обязательно. Всё равно, надеюсь, это временная мера.

Кстати, если дебажная версия программы работает, в принципе, нормально, то обычная при тех же условиях круто виснет, выход только через диспетчер задач.
(0011661)
vasketsov   
12-06-2013 19:03   
>Можно сказать, что в наборе содержится одна или несколько карт с неподдерживаемым типом кэша
Это можно.
Но дело в том, что проверка пост-фактум в принципе может также сработать (как в случае с json).
Так что проверка на наличие неизвестного типа кэша ДО открытия кэша не отменяет существующей проверки, что всё красиво создалось. То бишь проверок будет две, на том и погрешим.