| Anonymous | Login | Signup for a new account | 04-11-25 05: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] Баг / Bug | 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 | |||||||||
  		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 (3815x), vdemidov (25x), GunSmoker (22x), zed (3x), vasketsov (1x) | 
| Total Views | 3866 | 
| Last View | 04-11-2025 05: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 | 
| 08-08-2025 13:22 | zed | Category | Баг => Баг / Bug | 
| My View | View Issues | Change Log | Roadmap | Search | 
| Copyright © 2007 - 2025 SAS.Planet Team |