SASGIS - SAS.Планета
View Issue Details
0002963SAS.Планета[All Projects] Багpublic12-02-2016 08:0616-06-2016 10:15
dmitryP 
vdemidov 
normalcrashalways
resolvedfixed 
x64WindowsWin7 SP1
151111 
160606160606 
0002963: ЕAccessViolation при склейке карты
При попытке склейки карты после запуска появляется сообщение об "EAccessViolation: Access violation at address 00405112 in module SAS.Planet. Read address 00000100".
Файл изображения создается, но формат - некорректный.

1. Загрузить тайлы для области
2. Запустить склейку карты. Формат изображения и настройки склейки - произвольные.
3. После запуска склейки немедленно появляется сообщение (100%).
Не воспроизводится на v.150915.
Воспроизводится на v.151111 и Nightly build.
При попытке склейки Debug-версии приложение завершается. ELF-файл не образуется.
No tags attached.
related to 0002229resolved vdemidov Артефакты при отображении тайлов 
related to 0001163resolved vdemidov Искажения при наложении слоёв с разными проекциями 
png ss1.png (684,476) 12-02-2016 08:06
https://bugtracker.sasgis.org/file_download.php?file_id=2007&type=bug
? finland_.hlg (252) 13-02-2016 17:19
https://bugtracker.sasgis.org/file_download.php?file_id=2008&type=bug
Issue History
12-02-2016 08:06dmitryPNew Issue
12-02-2016 08:06dmitryPFile Added: ss1.png
13-02-2016 17:19dmitryPNote Added: 0017014
13-02-2016 17:19dmitryPFile Added: finland_.hlg
14-02-2016 07:03zedNote Added: 0017015
14-02-2016 07:04zedStatusnew => confirmed
28-02-2016 20:16vdemidovTarget Version => 160606
01-03-2016 15:53vdemidovNote Added: 0017047
02-06-2016 16:43vdemidovAssigned To => vdemidov
02-06-2016 16:43vdemidovStatusconfirmed => assigned
02-06-2016 17:04vdemidovNote Added: 0017291
02-06-2016 17:04vdemidovStatusassigned => resolved
02-06-2016 17:04vdemidovFixed in Version => 160606
02-06-2016 17:04vdemidovResolutionopen => fixed
16-06-2016 10:15vdemidovRelationship addedrelated to 0002229
16-06-2016 10:15vdemidovRelationship addedrelated to 0001163

Notes
(0017014)
dmitryP   
13-02-2016 17:19   
Дополнительная информация.
Проблема проявляется только на определенной области выделения (добавил - finland_.hlg).
После небольшого изменения (чуть увеличил) - все собралось без проблем.
(0017015)
zed   
14-02-2016 07:03   
Да, под отладчиком срабатывет ассерт вот тут: \Src\RegionProcess\Combine\u_ImageLineProvider.pas, line 257


function TImageLineProviderAbstract.GetLocalLine(ALine: Integer): Pointer;
var
  VMapLine: Integer;
begin
  Assert(ALine >= 0);
  VMapLine := FMapRect.Top + ALine;
  Assert(VMapLine < FMapRect.Bottom);
  Assert(VMapLine >= FPreparedMapRect.Top); // <-- вот этот ассерт
  Assert(VMapLine < FPreparedMapRect.Bottom);
  Result := FPreparedData[VMapLine - FPreparedMapRect.Top];
end;
(0017047)
vdemidov   
01-03-2016 15:53   
Для надежности, нужно добавить такой же ассерт:

  Assert(VMapLine >= FPreparedMapRect.Top);
  Assert(VMapLine < FPreparedMapRect.Bottom);

в функцию GetLine после вычисления FPreparedMapRect.

Ошибка похоже в функции GetMapRectForLine. Но в чем дело я пока понять не могу. Нужно смотреть в отладчике. Вечером гляну.
(0017291)
vdemidov   
02-06-2016 17:04   
Это было тупо. В свое время когда работа с координатами была очень небрежна, для того что бы тайл после преобразования в географические координаты, а потом обратно, оставался тайлом, а не увеличивался на соседние была добавлена эта штука с округлением. Вот только я почему-то не учел, что 1 пиксел тайла это чуть меньше чем 0,005. Вот и получили глюки.