Anonymous | Login | Signup for a new account | 21-11-24 12:56 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 | ||||
0002781 | SAS.Планета | [All Projects] Баг | public | 03-08-2015 19:36 | 04-08-2015 07:29 | ||||
Reporter | GunSmoker | ||||||||
Assigned To | GunSmoker | ||||||||
Priority | normal | Severity | minor | Reproducibility | sometimes | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | 8.1 | OS Version | x64 | ||||
Product Version | 141212 | ||||||||
Target Version | 150915 | Fixed in Version | 150915 | ||||||
Summary | 0002781: Access Violation в TDownloadResultError.GetErrorText в юникодной версии | ||||||||
Description | Иногда FErrorTextArgs содержит мусор вместо актуальных данных, что приводит к возбуждению EAccessViolation внутри SysUtils.Format, вызываемой из u_DownloadResult.TDownloadResultError.GetErrorText. При этом AErrorTextArgs для этого экземпляра TDownloadResultError были валидными в момент вызова конструктора. | ||||||||
Steps To Reproduce | Не уверен, проявляется редко. Часто всего всё проходит нормально: либо FErrorTextArgs оказывается валиден, либо мусор в FErrorTextArgs успешно читается SysUtils.Format и копируется в Result (в результате чего в Result - мусор, обычно - японско-китайские иероглифы). В любом случае это исключение где-то гасится и не всплывает до UI. | ||||||||
Additional Information | Пример стека: :75cb0192 KERNELBASE.RaiseException + 0x49 :0040769c NotifyNonDelphiException + $1C :77e12bd3 ntdll.RtlRaiseStatus + 0x86 SysUtils.WideFormatBuf(???,???,???,2,(...),$CD9898) SysUtils.FormatBuf(???,???,???,2,(...),$CD9898) SysUtils.FmtStr(???,'%s',(...),$CD9898) SysUtils.Format(???,???,$CD9898) SysUtils.Format(???,???) u_DownloadResult.TDownloadResultError.GetErrorText u_TileRequestResult.TTileRequestResultDownloadError.Create(???) u_TileDownloaderSimple.TTileDownloaderSimple.Download(TNotifierOneOperationByNotifier($7FC7CC98) as INotifierOneOperation,TNotifierOperation($797FF428) as INotifierOperation,0,TTileRequest($73C69A20) as ITileRequest) u_TileRequestQueueProcessorThread.TTileRequestQueueProcessorThread.Execute u_InterfacedThread.TThread4InterfacedThread.Execute | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | Безымянный.png [^] (172,709 bytes) 03-08-2015 19:36
| ||||||||
Notes | |
(0016279) GunSmoker (developer) 03-08-2015 19:38 |
Зачем там нетривиальное копирование массива вариантов? Не проще ли будет сразу делать Format? Производительность? |
(0016280) GunSmoker (developer) 03-08-2015 19:51 |
Ага, причина вылета: в AErrorTextArgs сидит Item.VType = vtUnicodeString, который игнорируется CopyVarRec (вернее, копируется "как есть", без выделения памяти аналогично vtString, vtAnsiString, vtPChar, vtPWideChar и vtWideString). Соответственно, если исходное исключение (сообщение об ошибке) уже было удалено в момент вызова TDownloadResultError.GetErrorText, то указатели из копии FErrorTextArgs указывают в космос. Есть шанс что это сработает, если память от сообщения об ошибке ещё не была перезаписана. |
(0016281) vdemidov (manager) 03-08-2015 20:00 |
Это значит, что эта ошибка проявляется только на юникодной версии делфи. Раньше vtUnicodeString вообще не существовало. |
(0016282) vdemidov (manager) 03-08-2015 20:01 |
Нужно допиливать CopyVarRec |
(0016283) vdemidov (manager) 03-08-2015 20:03 |
Сейчас действительно проще было бы сразу сделать формат. Но не хочется делать форматирование и локализацию строки, которая теоретически вообще не понадобиться. Есть еще хотелки 0001339 и 0001918 |
(0016284) GunSmoker (developer) 03-08-2015 20:45 |
https://bitbucket.org/sas_team/sas.planet.src/pull-requests/351/fixed-2781-unicodestring/diff |
(0016285) vdemidov (manager) 03-08-2015 20:50 |
Ага. Только пользуйся ребейзом и не делай ненужных мержей. |
(0016286) GunSmoker (developer) 03-08-2015 21:20 |
Окей, в следующий раз. А что за клиент вы используете для Windows? Я попробовал TortoiseHG - там есть Merge, а Rebase - только как дополнение. |
(0016287) vdemidov (manager) 03-08-2015 21:23 |
TortoiseHG Rebase именно дополнение, но оно штатное и поддерживается TortoiseHG. В простейшем варианте просто откат на нужную ревизию, а потом обновление файлов и новый коммит. А старый просто закрываете ветку. Делать новый клон репозитория необязательно. Загляните как Garl делает. Он у нас самый опытный по подготовке пул-реквестов. |
(0016288) GunSmoker (developer) 03-08-2015 21:26 |
...а где это посмотреть? Конкретно сейчас мне проще новый форк сделать, чем разбираться с тем, что я натворил :) |
(0016290) GunSmoker (developer) 03-08-2015 21:32 |
https://bitbucket.org/sas_team/sas.planet.src/pull-requests/352/fixed-2781/diff |
Users who viewed this issue | |
User List | Anonymous (3029x), vdemidov (25x), GunSmoker (22x), zed (3x), vasketsov (1x) |
Total Views | 3080 |
Last View | 21-11-2024 12:56 |
Issue History | |||
Date Modified | Username | Field | Change |
03-08-2015 19:36 | GunSmoker | New Issue | |
03-08-2015 19:36 | GunSmoker | File Added: Безымянный.png | |
03-08-2015 19:38 | GunSmoker | Note Added: 0016279 | |
03-08-2015 19:51 | GunSmoker | Note Added: 0016280 | |
03-08-2015 20:00 | vdemidov | Note Added: 0016281 | |
03-08-2015 20:01 | vdemidov | Note Added: 0016282 | |
03-08-2015 20:03 | vdemidov | Note Added: 0016283 | |
03-08-2015 20:04 | vdemidov | Summary | Access Violation в TDownloadResultError.GetErrorText => Access Violation в TDownloadResultError.GetErrorText в юникодной версии |
03-08-2015 20:04 | GunSmoker | Relationship added | related to 0002166 |
03-08-2015 20:06 | vdemidov | Relationship replaced | child of 0002166 |
03-08-2015 20:06 | vdemidov | Status | new => confirmed |
03-08-2015 20:06 | vdemidov | Product Version | .Nightly => 141212 |
03-08-2015 20:06 | vdemidov | Target Version | => 150915 |
03-08-2015 20:19 | GunSmoker | Assigned To | => GunSmoker |
03-08-2015 20:19 | GunSmoker | Status | confirmed => assigned |
03-08-2015 20:45 | GunSmoker | Note Added: 0016284 | |
03-08-2015 20:50 | vdemidov | Note Added: 0016285 | |
03-08-2015 21:20 | GunSmoker | Note Added: 0016286 | |
03-08-2015 21:23 | vdemidov | Note Added: 0016287 | |
03-08-2015 21:26 | GunSmoker | Note Added: 0016288 | |
03-08-2015 21:32 | GunSmoker | Note Added: 0016290 | |
04-08-2015 07:29 | vdemidov | Status | assigned => resolved |
04-08-2015 07:29 | vdemidov | Fixed in Version | => 150915 |
04-08-2015 07:29 | vdemidov | Resolution | open => fixed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |