SASGIS - SAS.Планета
View Issue Details
0001157SAS.Планета[All Projects] Багpublic05-02-2012 05:0510-10-2012 11:48
rudepravo 
vasketsov 
normalcrashalways
closedfixed 
WindowsXPSP3
.Nightly 
120808120808 
0001157: Падение на загрузке GPX-трека
При загрузке GPX-трека созданный SASPlanet программа падает. Лог ошибки и gpx-трек в приложении.
gpx, локаль, региональные настройки
zip track_with_fault.zip (972,964) 05-02-2012 05:05
http://bugtracker.sasgis.org/file_download.php?file_id=626&type=bug
Issue History
05-02-2012 05:05rudepravoNew Issue
05-02-2012 05:05rudepravoFile Added: track_with_fault.zip
05-02-2012 06:06TolikNote Added: 0005334
05-02-2012 06:09TolikNote Edited: 0005334bug_revision_view_page.php?bugnote_id=5334#r2697
05-02-2012 08:58rudepravoNote Added: 0005335
05-02-2012 09:17zedNote Added: 0005336
05-02-2012 12:00vasketsovNote Added: 0005337
05-02-2012 12:05vasketsovAssigned To => vasketsov
05-02-2012 12:05vasketsovStatusnew => assigned
05-02-2012 17:07vasketsovNote Added: 0005343
05-02-2012 17:07TolikNote Added: 0005344
05-02-2012 17:08TolikNote Added: 0005345
05-02-2012 17:09TolikNote Edited: 0005345bug_revision_view_page.php?bugnote_id=5345#r2699
05-02-2012 17:11vasketsovNote Added: 0005346
05-02-2012 18:08vasketsovNote Added: 0005347
05-02-2012 18:31TolikNote Added: 0005348
05-02-2012 19:55vasketsovNote Added: 0005351
06-02-2012 04:29TolikNote Added: 0005352
06-02-2012 08:39vasketsovStatusassigned => resolved
06-02-2012 08:39vasketsovFixed in Version => .Nightly
06-02-2012 08:39vasketsovResolutionopen => fixed
06-02-2012 08:44TolikFixed in Version.Nightly => 120808
06-02-2012 08:44TolikTarget Version => 120808
29-02-2012 11:41gpsMaxTag Attached: gpx
29-02-2012 11:41gpsMaxTag Attached: локаль
29-02-2012 11:41gpsMaxTag Attached: региональные настройки
10-10-2012 11:48TolikStatusresolved => closed

Notes
(0005334)
Tolik   
05-02-2012 06:06   
(edited on: 05-02-2012 06:09)
У меня на той же самой версии (вчерашней ночнушке) загрузился без проблем.

Старый ноутбук XP SP2, xerseslib.dll

(0005335)
rudepravo   
05-02-2012 08:58   
А с прикреплённого к инциденту gpx-трека не падает?
(0005336)
zed   
05-02-2012 09:17   
C xerces не падает, a с msxml, да - падает.
(0005337)
vasketsov   
05-02-2012 12:00   
Погляжу как смогу, сегодня не обещаю.
А вообще крайне рекомендуется пользоваться xerses. И сильно быстрее, и косяков меньше из-за опенсорсности.
(0005343)
vasketsov   
05-02-2012 17:07   
Мелкомягкий парсер умирает при виде строки типа "<speed>.15</speed>".
Добавление ведущего нуля не решает проблему. Всё равно ошибка:

Element content is invalid according to the DTD/Schema.'#$D#$A'Expecting: {http://www.topografix.com/GPX/1/1}ageofdgpsdata, {http://www.topografix.com/GPX/1/1}dgpsid, {http://www.topografix.com/GPX/....
Line: 31
<speed>0.15</speed>

Похоже, это глюк не собственно мелкомягкого парсера, а его провайдера xmldom. Так как GPSMapEdit этот трек загружает (а он умеет использовать только msxml, зато использует его напрямую). Если я всё правильно понимаю, то баг исчезнет не раньше, чем перейти на более новую версию Delphi, так как провайдер поставляется со средой.

Так что workaround один, пользоваться xerces. Это даже не workaround в привычном смысле, это просто рекомендуется изо всех сил.

Правда есть одна непонятка. В файле gpx везде отсутствуют ведущие нули в числовых значениях. Что конечно может и допустимо, но только странно, ибо у меня писалось до последнего запуска всё с ведущими нулями.

Впрочем, изменения в репо всё же внёсу, сделаю получение текста ошибки и выдачу его в виде исключения. А то запускать верификатор gpx на этом треке бессмысленно, ибо он основан на xerces и (если поправить ссылку на SasGpxExtensionsv1.xsd) сообщает только о незаконном теге speed.
(0005344)
Tolik   
05-02-2012 17:07   
Так давайте включим эти херсы в дистрибутив и закроем вопрос.
Ну и что, что лишние 2 мб. При нынешних ценах на интернет и на диски это не имеет значения.
(0005345)
Tolik   
05-02-2012 17:08   
(edited on: 05-02-2012 17:09)
Я думаю, этот парсер падает от того, что в региональных настройках у вас десятичная запятая, а не точка. У меня вот не падает (у меня точка).

(0005346)
vasketsov   
05-02-2012 17:11   
Пусть пункт повисит, не закрывайте. Глаза мне помозолит. Погляжу может чего в провайдере подкрутить можно. А xerces можно будет включить в новый релиз, реально не вижу смысла совать его в ночнушки.
(0005347)
vasketsov   
05-02-2012 18:08   
Отключил (только для msxml) дополнительные проверки (валидатор) при загрузке файла xml. На приаттаченном файле msxml стал работать.
(0005348)
Tolik   
05-02-2012 18:31   
А гипотезу про региональные настройки проверили?
(0005351)
vasketsov   
05-02-2012 19:55   
Региональные настройки влияли только на обрезание ведущих нулей в числах в логе gpx. Там был мой глупый косяк, что я сравнивал разделитель с текущим системным, а не с тем, который использовался строчкой выше для конвертации. Заодно ещё в паре мест поправил.
(0005352)
Tolik   
06-02-2012 04:29   
Ну, ведущие нули не очень-то и нужны, наверно.
А дурацкая идея мелкомягких сделать для России десятичную запятую очень часто приводит к проблемам. Когда я был маленький, :) все отлично знали: на компьютере надо писать через точку. И все были довольны, никаких проблем это не вызывало. А вот молодое поколение часто даже не догадывается, что бывают нерусские форточки и другие (правильные!) региональные настройки.

Так что, проблема решена?
Да ладно, закрывайте сами, когда считаете нужным.