View Issue Details

IDProjectCategoryView StatusLast Update
0001075SAS.ПланетаБаг / Bugpublic10-10-2012 11:49
ReporterTolik Assigned Tovdemidov  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
PlatformWindowsOS7OS VersionUltimate
Product Version.Nightly 
Target Version120808Fixed in Version120808 
Summary0001075: Зависает в редких случаях после импорта XML при обновлении меток (UpdateMarksList)
DescriptionСм. хотелку 516: http://sasgis.org/mantis/view.php?id=516#c4582
Версия Nightly.4681.
Tagssml, XML, импорт
Attached Files
sas_night_marks.rar (2,893,719 bytes)

Activities

vasketsov

22-12-2011 06:37

manager   ~0004590

продублирую здесь:
поглядел - это не относится к собственно импорту вообще, тем более к gpx.
у меня Out of Memory возникает просто при импорте первого файла kml.
крэшится при обновлении меток (внутри function TMarksDb.ReadCurrentMark: IMark);
к сожалению, мне правда сейчас некогда смежные проблемы решать.

vdemidov

22-12-2011 13:41

manager   ~0004592

А какой при этом размер sml? И сколько меток импортируется? Сколько программа при этом памяти кушает?

vasketsov

22-12-2011 14:00

manager   ~0004597

>А какой при этом размер sml?
у меня было загружено три района кадастра от росреестра (э то мегов 40 gpx).

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

у мну крэшитсся на приаттаченном файле.

zed

22-12-2011 14:22

manager   ~0004598

Last edited: 22-12-2011 14:23

>у мну крэшитсся на приаттаченном файле
А у меня нет - импортирует 14520 чего-то там.

vasketsov

22-12-2011 14:25

manager   ~0004600

Last edited: 22-12-2011 14:34

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

zed

22-12-2011 14:27

manager   ~0004601

Может быть, я протестировал импорт в чистую программу, без посторонних меток.

vdemidov

22-12-2011 14:40

manager   ~0004602

Вполне возможно. Считайте что программе сейчас требуется памяти примерно в 3 раза больше чем весит Sml. Так что если там метров 500 то увы. Хотя может это я и оптимистично очень.

vasketsov

22-12-2011 14:50

manager   ~0004603

Last edited: 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 мешков.
ззы. может и проще можно, но уж как получилось (дважды подряд).

Tolik

22-12-2011 16:02

manager   ~0004604

Last edited: 22-12-2011 16:05

Это я зазиповал один KML, что ли?
А хотел 4 GPX, после которых виснет. Акелла промахнулся :) Прошу прощения.
Ну не важно, этот KML сделан с помощью gpsbabel из реального GPX.

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

vasketsov

22-12-2011 16:24

manager   ~0004605

Нет, это я отдельно перепаковал тот файл, на котором крэшится.

vasketsov

22-12-2011 21:54

manager   ~0004606

Last edited: 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 юзается только один раз. Где-то после засирается значит.

vasketsov

22-12-2011 22:52

manager   ~0004607

прицепил свои метки, с которыми просто не импортится Толиков файл.
больше помочь нечем.

vdemidov

23-12-2011 10:47

manager   ~0004612

Блин. Воспроизводится. Но в чем причина даже идей нет. Идей как исправлять пока просто нет.

vdemidov

23-12-2011 15:06

manager   ~0004614

Вроде бы вылечилось. Но работу с треками нужно переделывать. На очень длинных треках отрисовка идет крайне медленно. Займусь в ближайшее время.

vasketsov

23-12-2011 19:17

manager   ~0004618

Подтверждаю. У меня импортируется то что раньше крэшилось. Сенкс.

vdemidov

23-12-2011 19:57

manager   ~0004619

Если бы кто-то еще сделал процедуры чтения/записи sml-файлов без использования датасетов, было бы совсем хорошо. Сейчас в памяти все метки живут в виде объектов + в виде датасета, а во время сохранения еще и в виде текста. Ну очень неэффективно.

vasketsov

23-12-2011 20:20

manager   ~0004620

Я так понял, что это XML. Тогда можно попробовать. Если а) исходить из возможности создания процедур (де)сериализации в XML, и б) если в рантайме можно избавиться от датасетов и текста, то я исключительно "за". В общем-то ничего сложного я пока не увидел в формате. Другое дело, что надо отдельную хотелку ))), и человеческое формльное описание этого XML. Ну и подождать, времени пока катастрофически нет, я только после каникул смогу.
Впрочем подумай, может перейти на полноценный kml раз и навсегда имеет смысл, но это надо рендер где-то надыбать (+ пописать операции с областью). Потому как по-любому импорт kml придётся докручивать, чтобы стили импортились и полигоны с дырками и многосвязные. Ещё неизвестно что проще, перепиливать имеющееся или новое впиливать.

vdemidov

24-12-2011 13:48

manager   ~0004624

Все что не касается именно этого бага в отдельные инциденты.

Issue History

Date Modified Username Field Change
22-12-2011 06:32 Tolik New Issue
22-12-2011 06:37 vasketsov Note Added: 0004590
22-12-2011 06:48 Tolik Status new => acknowledged
22-12-2011 13:41 vdemidov Note Added: 0004592
22-12-2011 14:00 vasketsov Note Added: 0004597
22-12-2011 14:00 vasketsov File Added: ГВ-ПП - 25-06-2011 11-32-14.rar
22-12-2011 14:22 zed Note Added: 0004598
22-12-2011 14:23 zed Note Edited: 0004598
22-12-2011 14:25 vasketsov Note Added: 0004600
22-12-2011 14:27 zed Note Added: 0004601
22-12-2011 14:34 vasketsov Note Edited: 0004600
22-12-2011 14:40 vdemidov Note Added: 0004602
22-12-2011 14:50 vasketsov Note Added: 0004603
22-12-2011 14:52 vasketsov Note Edited: 0004603
22-12-2011 14:53 vasketsov File Added: my_tracks.rar
22-12-2011 14:55 vasketsov Note Edited: 0004603
22-12-2011 16:02 Tolik Note Added: 0004604
22-12-2011 16:05 Tolik Note Edited: 0004604
22-12-2011 16:24 vasketsov Note Added: 0004605
22-12-2011 21:54 vasketsov Note Added: 0004606
22-12-2011 21:55 vasketsov Note Edited: 0004606
22-12-2011 22:05 vasketsov Note Edited: 0004606
22-12-2011 22:07 vasketsov Summary Зависает после нескольких импортов GPX => Зависает в редких случаях после импорта XML при обновлении меток (UpdateMarksList)
22-12-2011 22:51 vasketsov File Added: sas_night_marks.rar
22-12-2011 22:52 vasketsov Note Added: 0004607
23-12-2011 10:47 vdemidov Note Added: 0004612
23-12-2011 15:06 vdemidov Note Added: 0004614
23-12-2011 15:06 vdemidov Status acknowledged => resolved
23-12-2011 15:06 vdemidov Fixed in Version => 120808
23-12-2011 15:06 vdemidov Resolution open => fixed
23-12-2011 15:06 vdemidov Assigned To => vdemidov
23-12-2011 15:20 vasketsov File Deleted: my_tracks.rar
23-12-2011 19:17 vasketsov Note Added: 0004618
23-12-2011 19:57 vdemidov Note Added: 0004619
23-12-2011 20:20 vasketsov Note Added: 0004620
23-12-2011 22:13 gpsMax Tag Attached: XML
23-12-2011 22:13 gpsMax Tag Attached: импорт
24-12-2011 13:48 vdemidov Note Added: 0004624
25-12-2011 21:19 gpsMax Tag Attached: sml
23-01-2012 08:34 vdemidov Target Version => 120808
10-10-2012 11:49 Tolik Status resolved => closed
08-08-2025 13:22 zed Category Баг => Баг / Bug