SASGIS - SAS.Планета
View Issue Details
0001075SAS.Планета[All Projects] Багpublic22-12-2011 06:3210-10-2012 11:49
Tolik 
vdemidov 
normalcrashalways
closedfixed 
Windows7Ultimate
.Nightly 
120808120808 
0001075: Зависает в редких случаях после импорта XML при обновлении меток (UpdateMarksList)
См. хотелку 516: http://sasgis.org/mantis/view.php?id=516#c4582
Версия Nightly.4681.
sml, XML, импорт
rar ГВ-ПП - 25-06-2011 11-32-14.rar (519,316) 22-12-2011 14:00
http://www.sasgis.org/mantis/file_download.php?file_id=546&type=bug
rar sas_night_marks.rar (2,893,719) 22-12-2011 22:51
http://www.sasgis.org/mantis/file_download.php?file_id=548&type=bug
Issue History
22-12-2011 06:32TolikNew Issue
22-12-2011 06:37vasketsovNote Added: 0004590
22-12-2011 06:48TolikStatusnew => acknowledged
22-12-2011 13:41vdemidovNote Added: 0004592
22-12-2011 14:00vasketsovNote Added: 0004597
22-12-2011 14:00vasketsovFile Added: ГВ-ПП - 25-06-2011 11-32-14.rar
22-12-2011 14:22zedNote Added: 0004598
22-12-2011 14:23zedNote Edited: 0004598bug_revision_view_page.php?bugnote_id=4598#r2272
22-12-2011 14:25vasketsovNote Added: 0004600
22-12-2011 14:27zedNote Added: 0004601
22-12-2011 14:34vasketsovNote Edited: 0004600bug_revision_view_page.php?bugnote_id=4600#r2274
22-12-2011 14:40vdemidovNote Added: 0004602
22-12-2011 14:50vasketsovNote Added: 0004603
22-12-2011 14:52vasketsovNote Edited: 0004603bug_revision_view_page.php?bugnote_id=4603#r2276
22-12-2011 14:53vasketsovFile Added: my_tracks.rar
22-12-2011 14:55vasketsovNote Edited: 0004603bug_revision_view_page.php?bugnote_id=4603#r2277
22-12-2011 16:02TolikNote Added: 0004604
22-12-2011 16:05TolikNote Edited: 0004604bug_revision_view_page.php?bugnote_id=4604#r2279
22-12-2011 16:24vasketsovNote Added: 0004605
22-12-2011 21:54vasketsovNote Added: 0004606
22-12-2011 21:55vasketsovNote Edited: 0004606bug_revision_view_page.php?bugnote_id=4606#r2281
22-12-2011 22:05vasketsovNote Edited: 0004606bug_revision_view_page.php?bugnote_id=4606#r2282
22-12-2011 22:07vasketsovSummaryЗависает после нескольких импортов GPX => Зависает в редких случаях после импорта XML при обновлении меток (UpdateMarksList)
22-12-2011 22:51vasketsovFile Added: sas_night_marks.rar
22-12-2011 22:52vasketsovNote Added: 0004607
23-12-2011 10:47vdemidovNote Added: 0004612
23-12-2011 15:06vdemidovNote Added: 0004614
23-12-2011 15:06vdemidovStatusacknowledged => resolved
23-12-2011 15:06vdemidovFixed in Version => 120808
23-12-2011 15:06vdemidovResolutionopen => fixed
23-12-2011 15:06vdemidovAssigned To => vdemidov
23-12-2011 15:20vasketsovFile Deleted: my_tracks.rar
23-12-2011 19:17vasketsovNote Added: 0004618
23-12-2011 19:57vdemidovNote Added: 0004619
23-12-2011 20:20vasketsovNote Added: 0004620
23-12-2011 22:13gpsMaxTag Attached: XML
23-12-2011 22:13gpsMaxTag Attached: импорт
24-12-2011 07:06TolikNote Added: 0004621
24-12-2011 07:08TolikNote Edited: 0004621bug_revision_view_page.php?rev_id=2288
24-12-2011 07:13TolikNote Edited: 0004621bug_revision_view_page.php?rev_id=2289
24-12-2011 07:15TolikNote Edited: 0004621bug_revision_view_page.php?rev_id=2290
24-12-2011 13:48vdemidovNote Added: 0004624
24-12-2011 14:02TolikNote Deleted: 0004621
25-12-2011 21:19gpsMaxTag Attached: sml
23-01-2012 08:34vdemidovTarget Version => 120808
10-10-2012 11:49TolikStatusresolved => closed

Notes
(0004590)
vasketsov   
22-12-2011 06:37   
продублирую здесь:
поглядел - это не относится к собственно импорту вообще, тем более к gpx.
у меня Out of Memory возникает просто при импорте первого файла kml.
крэшится при обновлении меток (внутри function TMarksDb.ReadCurrentMark: IMark);
к сожалению, мне правда сейчас некогда смежные проблемы решать.
(0004592)
vdemidov   
22-12-2011 13:41   
А какой при этом размер sml? И сколько меток импортируется? Сколько программа при этом памяти кушает?
(0004597)
vasketsov   
22-12-2011 14:00   
>А какой при этом размер sml?
у меня было загружено три района кадастра от росреестра (э то мегов 40 gpx).

да это наверное не принципально. как я понял, там u_ImportMP и u_ImportHLG пописались, а u_ImportKML нет, в итоге там по-старому зовётся Add вместо новой записи метки в процедуре Do.... Я б и сделал также без Do..., но не уверен что ты именно этого хотел (вообще избавиться от Do...).

у мну крэшитсся на приаттаченном файле.
(0004598)
zed   
22-12-2011 14:22   
(edited on: 22-12-2011 14:23)
>у мну крэшитсся на приаттаченном файле
А у меня нет - импортирует 14520 чего-то там.

(0004600)
vasketsov   
22-12-2011 14:25   
(edited on: 22-12-2011 14:34)
могут быть особенности при совпадении (имён?) меток.
вощем снёс все метки - и без проблем импортировал весь Толиков архив (почти 77 тыщ меток). и потом опять по новой поверх его же импортировал в произввольном порядке.
может и вправду слишком много меток было.

(0004601)
zed   
22-12-2011 14:27   
Может быть, я протестировал импорт в чистую программу, без посторонних меток.
(0004602)
vdemidov   
22-12-2011 14:40   
Вполне возможно. Считайте что программе сейчас требуется памяти примерно в 3 раза больше чем весит Sml. Так что если там метров 500 то увы. Хотя может это я и оптимистично очень.
(0004603)
vasketsov   
22-12-2011 14:50   
(edited on: 22-12-2011 14:55)
Гы. Воспроизвёл без меток.
Встаёт после Blob2ExtArr(FCdsMarks.FieldByName('LonLatArr'), VPoints);
По шагам:
1. Снёс руками все метки (удалил фаайлы категорий и меток).
2. Импортировал свои треки в категорию MSK_PERM. Все из архива (сейчас выложу архив). Сначала kml (по алфавиту) потом gpx (по алфавиту). После импорта менял имя меток для gpx на имя исходного файла gpx. Применить не жал.
3. Закрыл окошко импорта по OK.
4. Снова открыл импорт и импортировал Толиков файл (приаттачен) в категорию "Новая категория" (её не было до этого).
5. PROFIT!
зы. после крэша Толиковых меток нет, после закрытия саса файл меток 12.5 мешков.
ззы. может и проще можно, но уж как получилось (дважды подряд).

(0004604)
Tolik   
22-12-2011 16:02   
(edited on: 22-12-2011 16:05)
Это я зазиповал один KML, что ли?
А хотел 4 GPX, после которых виснет. Акелла промахнулся :) Прошу прощения.
Ну не важно, этот KML сделан с помощью gpsbabel из реального GPX.

A sml небольшой, метра 3 всего.

(0004605)
vasketsov   
22-12-2011 16:24   
Нет, это я отдельно перепаковал тот файл, на котором крэшится.
(0004606)
vasketsov   
22-12-2011 21:54   
(edited on: 22-12-2011 22:05)
Если грузить по моему алгоритму, то при загрузке Толикового файла, если поставить бряк в функции
function TMarkFactory.CreateMark(
на строке
if VPointCount > 0 then begin
то видно, что прога пытается создать объект из 73558 точек опупенное количество раз, ибо зовётся это изнутри цикла
for i := VMinCount to VMaxCount - 1 do begin
внутри процы
function TMarksDb.UpdateMarksList(AOldMarkList, ANewMarkList: IInterfaceList): IInterfaceList;

судя по всему всё количество раз (VMinCount=0, VMaxCount=14520) и идёт яростное убийство свободной памяти.
Была б рекурсия - завалился бы стек.

А вот почему внутри
function TImportKML.DoImport(AFileName: string; AConfig: IImportConfig): IInterfaceList;
забубенивается одно и то же все разы - надо смотреть.
зы. А вот фигушки. В TImportKML.DoImport массив длиной 73558 юзается только один раз. Где-то после засирается значит.

(0004607)
vasketsov   
22-12-2011 22:52   
прицепил свои метки, с которыми просто не импортится Толиков файл.
больше помочь нечем.
(0004612)
vdemidov   
23-12-2011 10:47   
Блин. Воспроизводится. Но в чем причина даже идей нет. Идей как исправлять пока просто нет.
(0004614)
vdemidov   
23-12-2011 15:06   
Вроде бы вылечилось. Но работу с треками нужно переделывать. На очень длинных треках отрисовка идет крайне медленно. Займусь в ближайшее время.
(0004618)
vasketsov   
23-12-2011 19:17   
Подтверждаю. У меня импортируется то что раньше крэшилось. Сенкс.
(0004619)
vdemidov   
23-12-2011 19:57   
Если бы кто-то еще сделал процедуры чтения/записи sml-файлов без использования датасетов, было бы совсем хорошо. Сейчас в памяти все метки живут в виде объектов + в виде датасета, а во время сохранения еще и в виде текста. Ну очень неэффективно.
(0004620)
vasketsov   
23-12-2011 20:20   
Я так понял, что это XML. Тогда можно попробовать. Если а) исходить из возможности создания процедур (де)сериализации в XML, и б) если в рантайме можно избавиться от датасетов и текста, то я исключительно "за". В общем-то ничего сложного я пока не увидел в формате. Другое дело, что надо отдельную хотелку ))), и человеческое формльное описание этого XML. Ну и подождать, времени пока катастрофически нет, я только после каникул смогу.
Впрочем подумай, может перейти на полноценный kml раз и навсегда имеет смысл, но это надо рендер где-то надыбать (+ пописать операции с областью). Потому как по-любому импорт kml придётся докручивать, чтобы стили импортились и полигоны с дырками и многосвязные. Ещё неизвестно что проще, перепиливать имеющееся или новое впиливать.
(0004624)
vdemidov   
24-12-2011 13:48   
Все что не касается именно этого бага в отдельные инциденты.