Anonymous | Login | Signup for a new account | 03-12-24 18:10 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 | ||||
0001908 | SAS.Планета | [All Projects] Баг | public | 28-04-2013 16:07 | 15-06-2013 16:00 | ||||
Reporter | Papazol | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | have not tried | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | XP | OS Version | Professional SP3 | ||||
Product Version | .Nightly | ||||||||
Target Version | 131111 | Fixed in Version | 131111 | ||||||
Summary | 0001908: Ошибка при открытии кэша Беркли | ||||||||
Description | Есть ряд снимков DG, скачанных давно и упакованных в базу данных Беркли. Ночная сборка 7253 не открывает ни один из этих снимков и даёт ошибку. Другие кэши работают нормально. | ||||||||
Steps To Reproduce | 1. С помощью релиза 20121010 копирую один из снимков в другой кэш типа SASPlanet (т. е. тайловый). 2. Делаю zmp для работы с этим кэшем. 3. Проверяю его работоспособность на релизе. 4. Выделяю один тайл на z15 и копирую z15-z17 в новое место с изменением типа кэша на Беркли. 5. Делаю zmp для работы уже с этим кэшем. 6. Проверяю его работоспособность на релизе. 4. Делаю полигон, чтобы можно было найти нужное место. Экспортирую его в kmz. 5. Создаю новую папку, в которую распаковываю содержимое архива с ночной сборкой 7253. 6. Кидаю созданный тестовый кэш в папку \SASPlanet\cache_db\DG. 7. Кидаю zmp для соответствующего кэша в папку \SASPlanet\Maps\sas.maps. 8. Открываю программу 7253 (Debug). Никакие настройки не изменяю. По умолчанию устанавливается Гугль. Отменяю режим "Интернет и кэш". 9. Импортирую kmz с границами снимка. Вывожу его на экран. 10. Открываю карту, соответствующую тестовому кэшу. 11. Возникает ошибка. 12. Закрываю программу. 13. Упаковываю кэш, zmp и kmz в архив и кладу его на файлообменник. Ссылка: http://rghost.ru/45624129 | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | DB_CONFIG [^] (664 bytes) 28-04-2013 16:34 [Show Content]
SASPlanet.Debug.elf [^] (63,654 bytes) 28-04-2013 16:50 msg.log [^] (4,633 bytes) 28-04-2013 17:47 stat_m.txt [^] (2,696 bytes) 28-04-2013 18:54 [Show Content] | ||||||||
Notes | |
(0011268) zed (manager) 28-04-2013 16:33 |
Не поверите, но у меня всё работает. Опять. Но у вас в sdb.log я вычитал вот такую ошибку: >EBerkeleyDBExeption: Error #2: No such file or directory что говорит о том, что SAS скорее всего не может получить доступ к какому-то файлу или каталогу. Чтобы точнее определить, в чём загвоздка, удалите из папки env все файлы кроме лога (log.0000000001) и положите в него DB_CONFIG из аттача. Затем запустите SAS, словите ошибку, закройте SAS и приложите сюда файл msg.log из папки cache_db\DG\. Можете и сами посмотреть в тот лог и проверить, чтобы у SAS был доступ на запись во все папки и ко всем файлам, к которым происходит обращение в том логе. |
(0011269) Papazol (reporter) 28-04-2013 16:51 |
Сделал как написано. И кэш стал открываться. Файл msg.log не создан. При закрытии программы ошибка есть. Эльф прилагаю. |
(0011270) zed (manager) 28-04-2013 16:57 |
>И кэш стал открываться. О, значит была проблема с теми файликами что удалили. Попробуйте запустит не удаляя их, а только заменив DB_CONFIG (кэш возьмите из того архива, что приаттачили). Интересно, что напишет в лог. >Файл msg.log не создан. Точно в папке DG смотрели? Должен быть по-любому (с тем DB_CONFIG, что я приложил). Либо действительно чехарда с правами на запись. >При закрытии программы ошибка есть. Эльф прилагаю. В аттаче только утечка памяти, и то, кэш Беркли там не светится, так что течёт что-то другое. |
(0011271) Papazol (reporter) 28-04-2013 17:12 |
При замене только файла DB_CONFIG (я правильно понял, что файл без расширения надо удалить, а с расширением .txt туда положить?) тайлы открываться перестали, однако лог всё равно не создаётся. Я просмотрел все близлежащие папки. Зато в sdb.log появилась ещё одна запись. Какой-то папки или файла не может найти, но какой - непонятно. |
(0011272) zed (manager) 28-04-2013 17:15 |
>а с расширением .txt Не должно быть никакого расширения у этого файла. |
(0011273) Papazol (reporter) 28-04-2013 17:47 edited on: 28-04-2013 17:53 |
Вот теперь что-то нарисовалось. Файл лога создался. Судя по нему, программа хотела открыть файл, созданный релизом из тайлового кэша, но которого по такому пути нет. Почему его нет - понятно, это при копировании создалась лишняя папка, из которой я всё перенёс в корень. Получается, что так делать нельзя. Но остальные подобные кэши почему не открываются? Они ведь никуда не копировались, а создавались из тайловых менеджером кэша. |
(0011274) zed (manager) 28-04-2013 18:30 |
Проблема в том, что в файле лога log.0000000001 остался абсолютный путь к кэшу. Когда-то давно, этот баг был пофикшен и теперь в файлах лога сохраняются только относительные пути. Вот вы видимо на этот баг и напоролись, используя релиз. Для того, чтобы заработали те остальные кэши из релиза, нужно воспользоваться утилитой sdb_util и выполнить действие Reset LSN, с автоматическим удалением содержимого папки env. После этого, ночнушка подхватит кэш как положено. |
(0011275) zed (manager) 28-04-2013 18:54 edited on: 28-04-2013 18:57 |
И проблема даже не в самом файле лога, а в файле __db.005, в котором хранится кэш открытых страниц (mem pool) и в котором так же прописаны абсолютные пути к файлам БД (в релизе). Из-за этого и падает с ошибкой. Но ноги растут из того же бага, с абсолютными путями. Просто в файле лога эта ошибка не столь критична, как в файлах __db.xxx. |
(0011276) Papazol (reporter) 28-04-2013 18:59 |
Проделал я сброс LSN со всеми "плохими" кэшами. Но это не помогло. Всё то же самое. Хотелось бы лог создать для них, посмотреть хоть, куда программа ломится. Кроме того, я не могу упаковать обратно в БД тайловый кэш, который я из БД вытащил. Там-то не может быть никаких лишних путей. Если произошла утечка памяти, компьютер следует перезагрузить, или не обязательно? |
(0011277) zed (manager) 28-04-2013 19:06 |
>Проделал я сброс LSN со всеми "плохими" кэшами. Но это не помогло. Т.е. папка env удалилась, вы запустили ночнушку и ничего? >Хотелось бы лог создать для них, посмотреть хоть, куда программа ломится. ПолОжите файлик DB_CONFIG - увидите. >Кроме того, я не могу упаковать обратно в БД тайловый кэш, который я из БД вытащил. Это уже что-то новенькое. >Если произошла утечка памяти, компьютер следует перезагрузить Нет. После закрытия САС вся память назад возвращается в систему автоматически. |
(0011278) Papazol (reporter) 28-04-2013 19:10 |
А папка env-то и не удалилась. Должна была автоматически? Теперь как с нею? |
(0011279) zed (manager) 28-04-2013 19:14 |
>Теперь как с нею? sdb_util - Config - Delete env folder on finish и повторить процедуру сброса LSN. |
(0011281) Papazol (reporter) 28-04-2013 19:28 |
Оказалось несколько иначе. На самом деле, папки env удалились, галка там стояла. Но при запуске программы эти папки создались заново. Попробовал я заменить файл DB_CONFIG, чтоб лог создавался, но лог почему-то не создаётся. А в sdb.log всё та же проблема с несуществующей папкой/файлом. |
(0011282) zed (manager) 28-04-2013 19:33 |
Выложите проблемную папку env. |
(0011283) Papazol (reporter) 28-04-2013 19:35 |
http://rghost.ru/45630211 |
(0011284) zed (manager) 28-04-2013 19:43 |
Что-то тут не то. Вы точно не запускали релиз после того как сделали сброс LSN и удаление папки env? Дело в том, что ночнушка сейчас по дефолту создаёт несколько большие буфера в env, т.е. к примеру файл __db.004 (буфер лога) должен весить 2Мб, а в вашем env размеры буферов такие, как в предыдущем релизе/старых ночнушках. |
(0011285) Papazol (reporter) 28-04-2013 19:51 |
В релизе нет дебажного exe-шника. Думаю, надо взять тайм-аут до завтра, голова совсем уже не варит... |
(0011339) Papazol (reporter) 08-05-2013 06:52 |
Пока ничего не изменилось. Пробовал ночную 7254. |
(0011340) zed (manager) 08-05-2013 07:12 |
>Пока ничего не изменилось Так мы остановились на том, что у кэша Беркли, созданного при помощи старого релиза нужно удалить файлы __db.xxxx в папке env при помощи утилиты sdb_util, а затем запустить ночнушку, чтобы она создала эти файлики сама и чтобы они были бОльшего размера, чем сейчас, ввиду изменившихся дефолтных настроек. Причём нужно использовать не абы какую ночнушку, а именно последнюю. И что ещё важно - релизную версию на кэше Беркли уже запускать нельзя (никогда), иначе она опять нагадит в env. А какой-либо доработке в самом САСе по этому поводу проводить не нужно. Описываемая вами ситуация - отголоски старого бага, который присутствует в старом релизе. Поэтому всё, что можно сделать, это вылечить старый кэш и юзать его уже только в новых версиях ночнушек. |
(0011349) Papazol (reporter) 08-05-2013 19:58 edited on: 08-05-2013 20:00 |
Всё-таки что-то здесь не то... Сделал опять всё, как указано. Папка env удалилась. Запускаю программу, выбираю нужный кэш. Опять ошибка, и ничего не показывает. Папку env воссоздаёт. Но размеры файлов опять маленькие, как и раньше. Сама утилита sdb_util не изменилась? Правда, в последней ночнушке её нет. Не знаю, напрямую это связано с моей проблемой или опосредованно, но я не могу конвертировать в Беркли тайловый кэш, который я ранее конвертировал из Беркли, но релизом. В тайловом-то кэше какие могут быть косяки, не позволяющие его упаковать? Он последней ночнушкой свободно открывается, как, впрочем, и предыдущими, это же обычный тайловый. |
(0011350) zed (manager) 08-05-2013 20:14 |
> Но размеры файлов опять маленькие, как и раньше. Нонсенс. Файл DB_CONFIG появляется? >Сама утилита sdb_util не изменилась? Обновления утилиты регулярно публикуются в топике http://sasgis.org/forum/viewtopic.php?f=2&t=2024 |
(0011354) Papazol (reporter) 09-05-2013 17:11 |
Файл DB_CONFIG появляется: set_flags DB_TXN_WRITE_NOSYNC on set_lg_dir . set_data_dir .. set_cachesize 0 2097152 1 mutex_set_max 30000 set_lg_max 10485760 set_lg_bsize 2097152 log_set_config DB_LOG_AUTO_REMOVE on Скачал последнюю версию sdb_util. Прогнал ею свой кэш. Всё опять то же самое. Поскольку в логе sdb есть упоминание отсутствия файла/папки, значит, ссылка на абсолютный путь не убрана. |
(0011355) zed (manager) 09-05-2013 20:35 |
Для меня остаётся загадкой, почему при правильном DB_CONFIG создаются файлы неправильных размеров. Единственное предположение, так это то, что SAS создаёт конфиг, но по каким-то причинам не может его прочитать (хотя с чего бы вдруг?), игнорит и использует дефолтные настройки. Но даже в таком случае, должна начаться закачка карт прямо в папку env. Хотя, если вы говорите, что это старый DG, то там скорее всего включён режим "Только из кэша"? Маловероятно, но может быть ещё проблема в русских символах в путях к кэшу, если они, конечно, есть, эти символы. Попробуйте расположить кэш по наиболее короткому пути с латинскими символами и без пробелов для надёжности. |
(0011356) Papazol (reporter) 09-05-2013 21:28 edited on: 09-05-2013 21:30 |
Попробовал убрать кириллицу и пробелы, которые были. Как ни странно, это подействовало. Но только, как бы это сказать, наполовину. А именно, переименовав папку с тайловым кэшем, я тут же смог её упаковать в Беркли! Проделав же с переименованным кэшем Беркли (другим, не этим!) процедуру сброса LSN, получил кэш без папки env, и она больше не создаётся. Соответственно, картинка не показывается, но и ошибки не возникает, по крайней мере, в части sdb, хотя утечка памяти всё равно есть. Пробовал утилитой восстановление, но никаких ошибок найдено не было. Всё это означает, что зависимость работы от кириллицы/пробелов в названиях папок реально существует. Это не совсем хорошо. Более ранние версии к этому были лояльнее. |
(0011357) Papazol (reporter) 10-05-2013 07:15 |
Ну всё, вроде бы эту тему можно считать закрытой. Итак, кириллицу в названиях папок программа не приемлет напрочь. Либо это надо как-то решать, либо прямо заявить об этом, а лучше проверять и сообщать прямо в интерфейсе. Время, убитое на выявление ошибки, было слишком велико. Все кэши, имевшие в названиях кириллицу, я переименовал, и они сразу заработали. И даже тот, у которого я удалял LSN, заработал тоже. Причём обнаружить в его названии наличие запрещённых символов оказалось непросто. Изначально он назывался "DG Рязань 2005_DB". Затем я дал ему имя "DG_Ryazan_2005_DB". Казалось бы, всё на латинице, ан нет, не работал. Обнаружено это было лишь по положению этой папки в окне Total Commander'а. Эта папка стояла не после ...Ryazan_2004..., а после всех ...Ryazan... |
(0011481) zed (manager) 03-06-2013 08:23 |
Проблему с кириллицей решить можно. Если перекомпилировать либу и отключить у неё юникод (там от производителя предусмотрена директива), то всё чудесным образом начинает работать. Но мне это решение не очень нравится и нужно посмотреть, может удастся решить проблему и без перкомпиляции. |
(0011485) vasketsov (manager) 03-06-2013 09:41 |
>может удастся решить проблему и без перкомпиляции У SQLite3 аналогичная проблема, лечится использованием AnsiToUtf8 (см. TSQLite3DbHandler.Open и сравни с OpenW). Может и тут также полечится? |
(0011487) zed (manager) 03-06-2013 09:48 |
Тут тоже используется AnsiToUtf8 и сами БД нормально открываются, но где-то сбоит внутренний механизм в либе и когда она пытается достучаться до файлика DB_CONFIG выходит облом. Толи баг в либе, толи ещё хз что. |
(0011624) zed (manager) 10-06-2013 17:31 |
Проверяйте. Сделал более-менее компромиссно: на русских путях будет работать, но изменить дефолтные настройки через DB_CONFIG не получится. Этот файл хоть и создаётся, но либа его игнорирует (вернее не может достучаться). Ну, т.е. будет всё тоже, что было и в релизе 121010. НО консольные утилиты из комплекта sdb_util, на русских путях скорее всего правильно не заработают (так же не смогут прочитать DB_CONFIG, а для них это критично). Так что о восстановлении кэша по таким путям скорее всего придётся забыть. |
(0011627) Papazol (reporter) 10-06-2013 18:02 |
Уж лучше переименовать пути, но чтобы работало всё, что есть. Вот дать предупреждение о невалидных путях было бы полезно. |
(0011628) zed (manager) 10-06-2013 18:09 |
Я могу только в лог записать сообщение, но наврят ли его кто будет читать. |
Users who viewed this issue | |
User List | Anonymous (3379x), vdemidov (1x) |
Total Views | 3380 |
Last View | 03-12-2024 18:10 |
Issue History | |||
Date Modified | Username | Field | Change |
28-04-2013 16:07 | Papazol | New Issue | |
28-04-2013 16:33 | zed | Note Added: 0011268 | |
28-04-2013 16:34 | zed | File Added: DB_CONFIG | |
28-04-2013 16:50 | Papazol | File Added: SASPlanet.Debug.elf | |
28-04-2013 16:51 | Papazol | Note Added: 0011269 | |
28-04-2013 16:57 | zed | Note Added: 0011270 | |
28-04-2013 17:12 | Papazol | Note Added: 0011271 | |
28-04-2013 17:15 | zed | Note Added: 0011272 | |
28-04-2013 17:47 | Papazol | Note Added: 0011273 | |
28-04-2013 17:47 | Papazol | File Added: msg.log | |
28-04-2013 17:53 | Papazol | Note Edited: 0011273 | View Revisions |
28-04-2013 18:30 | zed | Note Added: 0011274 | |
28-04-2013 18:54 | zed | Note Added: 0011275 | |
28-04-2013 18:54 | zed | File Added: stat_m.txt | |
28-04-2013 18:57 | zed | Note Edited: 0011275 | View Revisions |
28-04-2013 18:59 | Papazol | Note Added: 0011276 | |
28-04-2013 19:06 | zed | Note Added: 0011277 | |
28-04-2013 19:10 | Papazol | Note Added: 0011278 | |
28-04-2013 19:14 | zed | Note Added: 0011279 | |
28-04-2013 19:28 | Papazol | Note Added: 0011281 | |
28-04-2013 19:33 | zed | Note Added: 0011282 | |
28-04-2013 19:35 | Papazol | Note Added: 0011283 | |
28-04-2013 19:43 | zed | Note Added: 0011284 | |
28-04-2013 19:51 | Papazol | Note Added: 0011285 | |
07-05-2013 07:21 | vdemidov | Assigned To | => zed |
07-05-2013 07:21 | vdemidov | Status | new => assigned |
07-05-2013 17:01 | zed | Status | assigned => feedback |
08-05-2013 06:52 | Papazol | Note Added: 0011339 | |
08-05-2013 06:52 | Papazol | Status | feedback => assigned |
08-05-2013 07:12 | zed | Note Added: 0011340 | |
08-05-2013 09:33 | vdemidov | Status | assigned => feedback |
08-05-2013 19:58 | Papazol | Note Added: 0011349 | |
08-05-2013 19:58 | Papazol | Status | feedback => assigned |
08-05-2013 20:00 | Papazol | Note Edited: 0011349 | View Revisions |
08-05-2013 20:14 | zed | Note Added: 0011350 | |
09-05-2013 06:30 | zed | Status | assigned => feedback |
09-05-2013 17:11 | Papazol | Note Added: 0011354 | |
09-05-2013 17:11 | Papazol | Status | feedback => assigned |
09-05-2013 20:35 | zed | Note Added: 0011355 | |
09-05-2013 21:28 | Papazol | Note Added: 0011356 | |
09-05-2013 21:30 | Papazol | Note Edited: 0011356 | View Revisions |
10-05-2013 07:15 | Papazol | Note Added: 0011357 | |
03-06-2013 07:47 | vdemidov | Target Version | => 131111 |
03-06-2013 08:23 | zed | Note Added: 0011481 | |
03-06-2013 09:41 | vasketsov | Note Added: 0011485 | |
03-06-2013 09:48 | zed | Note Added: 0011487 | |
10-06-2013 17:31 | zed | Note Added: 0011624 | |
10-06-2013 17:31 | zed | Status | assigned => feedback |
10-06-2013 18:02 | Papazol | Note Added: 0011627 | |
10-06-2013 18:02 | Papazol | Status | feedback => assigned |
10-06-2013 18:09 | zed | Note Added: 0011628 | |
15-06-2013 16:00 | zed | Status | assigned => resolved |
15-06-2013 16:00 | zed | Fixed in Version | => 131111 |
15-06-2013 16:00 | zed | Resolution | open => fixed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |