View Issue Details

IDProjectCategoryView StatusLast Update
0001341SAS.ПланетаБаг / Bugpublic10-10-2012 11:42
ReporterTolik Assigned Tozed  
PriorityhighSeveritycrashReproducibilityalways
Status closedResolutionfixed 
PlatformWindowsOS7OS VersionUltimate
Product Version.Nightly 
Target Version120808Fixed in Version120808 
Summary0001341: Невозможно восстановить испорченный кэш Беркли
DescriptionПосле зависания программы во время скачки нескольких зумов её пришлось убивать, кэш Беркли, естественно, попортился.
Его не удаётся восстановить известными мне способами, а именно:
verify.bat не находит битых файлов, load.bat работает, но это не помогает.
При запуске программы и переходе на область с плохой БД всё виснет.

Цель этого запроса - создать инструмент, который чинит или хотя бы отбраковывает плохие файлы БД.
Steps To Reproduce1. Скачать http://narod.ru/disk/53365782001.a96e8e6c8d87711a994c5f73fff7af36/map.bad.zip.html
2. Распаковать куда-нибудь
3. Запустить verify.bat - ничего не найдёт.
4. Запустить load.bat - отработает успешно (запускать надо, т.к. логов в зипе нет).
5. Открыть карту гугла, найти Палермо (на z12), указать путь к плохому кэшу.
6. Составить карту заполнения на зуме 17 или 18.
7. Всё пропало.
TagsБД
Attached Files
env.zip (4,515,627 bytes)
verify.load.zip (580,533 bytes)

Activities

zed

19-06-2012 05:43

manager   ~0007483

>т.к. логов в зипе нет
Ммм, без логов восстановить сложно. Можно их тоже приложить для комплекта?

Tolik

19-06-2012 05:45

manager   ~0007484

Ну приложил, только это уже наверняка не те логи.

zed

19-06-2012 05:46

manager   ~0007485

А, и кэш я так понимаю, уже тоже после обработки батниками?

Tolik

19-06-2012 05:48

manager   ~0007486

Кэш после load.bat, запуска sas (который сгенерил новый env), зависания её.

Должен же быть способ проверить целостность каждого отдельного файла?

Tolik

19-06-2012 05:49

manager   ~0007487

Есть ещё кэш Both, у которого на z18 та же проблема.

vdemidov

19-06-2012 06:01

manager   ~0007492

>Цель этого запроса - создать инструмент, который чинит или хотя бы отбраковывает плохие файлы БД.
>При запуске программы и переходе на область с плохой БД всё виснет.
Если все так плохо, то нужно не только инструмент сделать, но и тайлохранилище от зависаний лечить.

zed

19-06-2012 06:02

manager   ~0007493

Какая версия ночнушки использовалась?

Tolik

19-06-2012 06:02

manager   ~0007494

В принципе, для этого и существует лог. Только вот что-то не помог.

Tolik

19-06-2012 06:02

manager   ~0007495

120613,5625

zed

19-06-2012 06:33

manager   ~0007500

Карта заполнения начала строиться, и даже успело найти что-то на z18, а потом словил вот такое сообщение: "First chance exception at $7C812AFB. Exception class EBerkeleyDBExeption with message 'BerkeleyDB: Lock table is out of available object entries'. Process SASPlanet.exe (3528)" и кэш перестал работать.
После перезапуска попробовал отцентрировать карту на z18 в том месте, где карта заполнения успела показать, что тайлы есть и получил вот такое сообщение: "Exception class EImagingError with message 'Memory 0852A520 (13292 Bytes) does not contain valid image in "Joint Photographic Experts Group Image" format.'." Т.е. там какой-то мусор оказался...

Tolik

19-06-2012 06:37

manager   ~0007501

А конвертер из Беркли в кэш SAS ещё не готов? Интересно бы сконвертировать и посмотреть, что в тех тайлах (если их вообще можно оттуда вытащить).
Кстати, это был бы способ лечения - спасти что-нибудь, а мусор стереть.

zed

19-06-2012 06:37

manager   ~0007503

Хотя странно, там же ж CRC32 всюду считается.

zed

19-06-2012 06:38

manager   ~0007504

>А конвертер из Беркли в кэш SAS ещё не готов?
Ещё нет.

vdemidov

19-06-2012 06:40

manager   ~0007505

>Хотя странно, там же ж CRC32 всюду считается.
Вот я и говорю, что сначала нужно разбираться с багами тайлохранилища, а уже потом тулзу для лечения кэша городить.

vdemidov

19-06-2012 06:41

manager   ~0007506

>>А конвертер из Беркли в кэш SAS ещё не готов?
> Ещё нет.
А учитывая, что он будет скорее всего на базе того же кода что и тайлохранилище, то он будет так же зависать на битых базах :)

zed

19-06-2012 06:44

manager   ~0007507

Зависает оно на карте заполнения из-за большого количества запросов (это возможно отдельный косяк с недавним прикручиванием ручных транзакций), а потайлово отдаёт нормально. Так что, распаковать вполне себе возможно. Теоретически.

Tolik

19-06-2012 06:46

manager   ~0007508

Не, у меня зависало и без карты заполнения, просто при переходе на плохой зум.

А насчёт багов - конечно, я надеюсь, что в процессе исследования они и выплывут.

Tolik

20-06-2012 04:19

manager   ~0007536

Кстати, с той версией libdb51.dll, что в ночной сборке, db_verify.exe вообще не работает. Работает с той, что в репозитории (zedxxx-berkeleydb-1d625d3b3e37.zip).
Надо поменять dll в ночнушке.

zed

20-06-2012 07:44

manager   ~0007542

В ночнушке более свежая версия dll.

Tolik

20-06-2012 07:45

manager   ~0007543

тогда надо где-то откопать более свежие exe

zed

20-06-2012 07:53

manager   ~0007544

Last edited: 20-06-2012 08:06

Berkeley DB 11 gR2 (11.2.5.1.29): http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html

Только и эти exe с той dll могут не заработать, т.к. dll я сам компилировал из исходников, а про exe как-то и не подумал.

Tolik

20-06-2012 08:52

manager   ~0007551

Блин, удалил подозрительные зумы руками, да видать не все. Теперь при экспорте зависает! :(

Tolik

20-06-2012 08:57

manager   ~0007552

Last edited: 20-06-2012 08:57

Скачал эту версию, мне она бесполезна, т.к. одни исходники.
Может, новый verify отловит битые файлы, если его скомпилировать?

zed

20-06-2012 13:04

manager   ~0007556

>т.к. одни исходники.
Есть там и бинарники: Berkeley DB 5.1.29.msi Windows installer http://download.oracle.com/berkeley-db/db-5.1.29.msi

>Может, новый verify отловит битые файлы,
Сомневаюсь, там же только баг-фиксы. Вот тут чейнджлог: http://download.oracle.com/otndocs/products/berkeleydb/html/changelog_5_1.html

Tolik

21-06-2012 07:39

manager   ~0007575

Last edited: 21-06-2012 07:40

Так, стёр полностью весь кэш Беркли (sat, map, both), выкачал Палермо в кэш САС, сконвертировал в МЯК, задачу выполнил, вернёмся к нашим баранам.

Сконверировал весь скачанный кэш САС в Беркли. Всё вроде хорошо, всё показывает.
Смотрю карту заполнения. На Both z18 - всё зависает.

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

Ночнушка сегодняшняя, dll оотуда.

zed

26-06-2012 18:24

manager   ~0007696

Всё-таки тут была проблема не в битом кэше, а в эксепшене 'BerkeleyDB: Lock table is out of available object entries', который стал вылазить после того, как я попытался в Беркли пускать несколько тайлов под одной транзакцией. Как только я это отключил, кэш спокойно распаковался на винт.

А то, что у меня там был эксепшен 'Memory 0852A520 (13292 Bytes) does not contain valid image...' так это из-за того, что в кэше лежат *.png файлы и это не Google Sat (куда я подключал кэш) а Google Map.

Так что, если db_verify показывает, что кэш порядке, то ему можно верить на 100% и искать баги в другом месте.

zed

08-07-2012 19:10

manager   ~0007782

Нужен подопытный убитый кэш Беркли, чтобы выработать методы борьбы. Приаттаченный кэш был (и есть) валидный в полном смысле слова, а проблемы были в коде САС (которые я пофиксил в баге 0001350).

Tolik

18-07-2012 09:16

manager   ~0007821

Last edited: 18-07-2012 09:31

Проверил свой битый кэш на 120718.06066 (не тот, что в аттаче).

При попадании на плохой файл всё виснет.
Скачал Berkeley DB 5.1.29.msi Windows installer http://download.oracle.com/berkeley-db/db-5.1.29.msi
Вытащил оттуда db_load и db_verify и libdb51.dll !! (приаттачил сюда).
verify ничего не нашел.
Стёр директорию env, запустил load, запустил SAS - всё открывается, не виснет, карта заполнения строится.

Tolik

18-07-2012 09:33

manager   ~0007822

Last edited: 18-07-2012 09:38

Опять-таки, с той dll, что в ночнушке, verify не работает, когда попадает на битый файл. Версии совпадают. Надо поменять в ночнушке (?)

А битого кэша пока больше нет, можно считать проблему решённой.

zed

18-07-2012 19:52

manager   ~0007828

В релизе САСа присутствую библиотеки msvcp71.dll и msvcr71.dll. Это ран-тайм библиотеки визуал студии 2003 и нужны они для ECW библиотек и от них никуда не деться.

Далее, я добавил в САС библиотеку, для работы с jpeg - jpeg62.dll и эта библиотека была скомпилирована (мной) в визуал студии 2008 и стала зависима от ран-тайм библиотек msvcp90.dll и msvcr90.dll. Скомпилировать jpeg62.dll в 2003-й студии (и сделать её зависимой от msvcp71.dll и msvcr71.dll) нельзя, т.к. там ограничение, на минимальную версию для компиляции - 2005.
 
Далее, я решил добавить в САС Беркли, но оказалось, что официальная dll и утилиты скомпилированы в 2005-ой студии - это минимальная поддерживаемая версия студии. Выходило, что появлялась ещё зависимость и от msvcp80.dll и msvcr80.dll. Поэтому, чтобы немного уменьшить зоопарк с зависимостью от msvcr, я пересобрал libdb51.dll в 2008-ой студии. Возможно, не самое правильное решение, и нужно было лучше пересобрать jpeg62.dll в 2005-ой студии, но вот так я решил.

Все остальные, добавляемые мной библиотеки (libpng15, zlib1, proj480, FreeImage), я стараюсь компилировать в 2003-й студии, хотя, в идеале, лучше бы перейти на 2010-ю студию и компилировать всё в ней (за исключением ECW - он то и тормозит прогресс) и, соответственно, положить msvcp100.dll и msvcr100.dll в релиз САСа. Но это +1Мб к релизу.

zed

18-07-2012 20:05

manager   ~0007829

Вот, собственно, после этого бага: 0001139 я и решил компилировать Беркли в 2008-й студии, поскольку на то, что не загружается jpeg никто не жаловался (т.е. у большинства пользователей библиотеки msvcp90.dll и msvcr90.dll стоят в системе).

Tolik

19-07-2012 05:16

manager   ~0007830

Last edited: 19-07-2012 05:20

Это какой-то вынос мозга. Надо держать на компе 3-4 версии Студии, компилировать каждую библиотеку в своей версии, а версию выбирать методом проб и ошибок???

Ну ладно, если уж так устроен мир - пусть. Но сделайте, пожалуйста, так, чтобы verify и load работали с тем dll, что есть в САС. Скомпилируйте их в какой-нибудь ещё Студии и положите в ночнушку. Они реально нужны, т.к. после каждого зависания кэш портится.

И не стоит уже считать эти мегабайты к релизу. Модемы на 1200 бод (и даже на 56к) давно вымерли как динозавры.

zed

02-08-2012 19:34

manager   ~0008052

http://sasgis.org/forum/viewtopic.php?f=2&t=2024#p29268

В ближайшее время пересоберу все библиотеки (+ утилиты для восстановление кэша Беркли) в десятой студии и добавлю их вместе с ран-таймами в ночнушку.

Issue History

Date Modified Username Field Change
19-06-2012 05:37 Tolik New Issue
19-06-2012 05:43 zed Note Added: 0007483
19-06-2012 05:44 zed Summary Невозможно восстановить покоррапченный кэш Беркли => Невозможно восстановить испорченный кэш Беркли
19-06-2012 05:44 Tolik File Added: env.zip
19-06-2012 05:45 Tolik Note Added: 0007484
19-06-2012 05:46 zed Note Added: 0007485
19-06-2012 05:48 Tolik Note Added: 0007486
19-06-2012 05:49 Tolik Note Added: 0007487
19-06-2012 06:01 vdemidov Note Added: 0007492
19-06-2012 06:02 zed Note Added: 0007493
19-06-2012 06:02 Tolik Note Added: 0007494
19-06-2012 06:02 Tolik Note Added: 0007495
19-06-2012 06:33 zed Note Added: 0007500
19-06-2012 06:37 Tolik Note Added: 0007501
19-06-2012 06:37 Tolik Assigned To => zed
19-06-2012 06:37 Tolik Status new => acknowledged
19-06-2012 06:37 zed Note Added: 0007503
19-06-2012 06:38 zed Note Added: 0007504
19-06-2012 06:40 vdemidov Note Added: 0007505
19-06-2012 06:41 vdemidov Note Added: 0007506
19-06-2012 06:44 zed Note Added: 0007507
19-06-2012 06:46 Tolik Note Added: 0007508
20-06-2012 04:19 Tolik Note Added: 0007536
20-06-2012 07:44 zed Note Added: 0007542
20-06-2012 07:45 Tolik Note Added: 0007543
20-06-2012 07:53 zed Note Added: 0007544
20-06-2012 08:06 zed Note Edited: 0007544
20-06-2012 08:52 Tolik Note Added: 0007551
20-06-2012 08:57 Tolik Note Added: 0007552
20-06-2012 08:57 Tolik Note Edited: 0007552
20-06-2012 13:04 zed Note Added: 0007556
21-06-2012 07:39 Tolik Note Added: 0007575
21-06-2012 07:40 Tolik Note Edited: 0007575
26-06-2012 18:24 zed Note Added: 0007696
07-07-2012 13:24 gpsMax Tag Attached: БД
08-07-2012 19:05 zed Assigned To zed =>
08-07-2012 19:05 zed Status acknowledged => feedback
08-07-2012 19:10 zed Note Added: 0007782
18-07-2012 09:16 Tolik Note Added: 0007821
18-07-2012 09:16 Tolik Status feedback => new
18-07-2012 09:16 Tolik File Added: verify.load.zip
18-07-2012 09:23 Tolik Status new => resolved
18-07-2012 09:23 Tolik Fixed in Version => 120808
18-07-2012 09:23 Tolik Resolution open => fixed
18-07-2012 09:23 Tolik Assigned To => zed
18-07-2012 09:31 Tolik File Deleted: verify.load.zip
18-07-2012 09:31 Tolik File Added: verify.load.zip
18-07-2012 09:31 Tolik Note Edited: 0007821
18-07-2012 09:33 Tolik Note Added: 0007822
18-07-2012 09:34 Tolik Status resolved => assigned
18-07-2012 09:38 Tolik Note Edited: 0007822
18-07-2012 19:52 zed Note Added: 0007828
18-07-2012 20:05 zed Note Added: 0007829
19-07-2012 05:16 Tolik Note Added: 0007830
19-07-2012 05:20 Tolik Note Edited: 0007830
24-07-2012 20:28 vdemidov Target Version => 120808
25-07-2012 05:45 vdemidov Resolution fixed => reopened
02-08-2012 19:34 zed Note Added: 0008052
03-08-2012 18:52 zed Status assigned => resolved
03-08-2012 18:52 zed Resolution reopened => fixed
10-10-2012 11:42 Tolik Status resolved => closed
08-08-2025 13:22 zed Category Баг => Баг / Bug