https://bugs.winehq.org/show_bug.cgi?id=32715
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.linuxliveusb.com |http://download.tuxfamily.o | |rg/lilicreator/old-versions | |/linuxlive/LinuxLive%20USB% | |20Creator%202.8.29.exe Component|-unknown |fonts Summary|LiLi USB Creator 2.8 |LiLi USB Creator 2.8 |crashes on ISO image |crashes on ISO image |selection |selection (needs 'Arial' | |font)
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
dupe of the many existing "missing Arial font" bug reports.
The crash/backtrace information isn't useful, it lacks the module/line number info. Fortunately, the project provides the original .au3 files and support scripts. One can use 'autoitv3' (https://www.autoitscript.com/site/autoit/downloads/) to run these which gets the following crash info:
--- snip --- REPORTER_ID : YGBEFMPEZVFU ERROR_MSG : "C:\Program Files (x86)\LinuxLive USB Creator\sources\LiLi\Graphics.au3" (618) : ==> Subscript used on non-accessible variable.: DllStructSetData($aInfo[0], "X", Int(($bar_width - DllStructGetData($aInfo[0], "Width")) / 2)) DllStructSetData($aInfo^ ERROR --- snip ---
Source of the script in question:
https://github.com/royopa/lilicreator/blob/master/2.8/Graphics.au3#L606
--- snip --- ; Author(s): Prog@ndy Func _DrawStringCenter(ByRef $hGraphic, $sString, $bar_width, $bar_height, $FontFormat = "Arial|12|1|0xFF000000|0", $InverseStart = -1) $FontFormat = StringSplit($FontFormat, "|") If $InverseStart>-1 And $FontFormat[5]=1 Then DLLCall($ghGDIPdll, "int", "GdipSetClipRectI", "ptr", $hGraphic, "int", 0, "int", 0, "int", $InverseStart, "int", $bar_height, "int", 0) $FontFormat[4]= BitOr(0xFF000000,_InverseColor($FontFormat[4])) EndIf Local $hBrush = _GDIPlus_BrushCreateSolid($FontFormat[4]) Local $hFormat = _GDIPlus_StringFormatCreate(0x0400) Local $hFamily = _GDIPlus_FontFamilyCreate($FontFormat[1]) Local $hFont = _GDIPlus_FontCreate($hFamily, $FontFormat[2], $FontFormat[3]) Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0) Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat) DllStructSetData($aInfo[0], "X", Int(($bar_width - DllStructGetData($aInfo[0], "Width")) / 2)) DllStructSetData($aInfo[0], "Y", Int(($bar_height - DllStructGetData($aInfo[0], "Height")) / 2)) _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush) If $InverseStart>-1 And $FontFormat[5]=1 Then DLLCall($ghGDIPdll, "int", "GdipSetClipRectI", "ptr", $hGraphic, "int", 0, "int", 0, "int", $bar_width, "int", $bar_height, "int", 0) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) EndFunc ;==>_DrawStringCenter --- snip ---
Corresponding trace log with gdiplus calls:
--- snip --- ... 002d:Call gdiplus.GdipCreateSolidFill(ff000000,008bdc70) ret=00420ee9 002d:trace:gdiplus:GdipCreateSolidFill (ff000000, 008BDC70) ... 002d:trace:gdiplus:GdipCreateSolidFill <-- 0277B120 002d:Ret gdiplus.GdipCreateSolidFill() retval=00000000 ret=00420ee9 ... 002d:Call gdiplus.GdipCreateStringFormat(00000400,00000000,008bdc88) ret=00420ee9 002d:trace:gdiplus:GdipCreateStringFormat (1024, 0, 008BDC88) ... 002d:trace:gdiplus:GdipCreateStringFormat <-- 0277B268 002d:Ret gdiplus.GdipCreateStringFormat() retval=00000000 ret=00420ee9 .... 002d:Call gdiplus.GdipCreateFontFamilyFromName(02d09288 L"Arial",00000000,008bdc88) ret=00420ee9 ... 002d:Call gdi32.EnumFontFamiliesW(0087009b,02d09288 L"Arial",6f68ce80,008bd97c) ret=6f68d052 ... 002d:Ret gdi32.EnumFontFamiliesW() retval=00000001 ret=6f68d052 ... 002d:Ret gdiplus.GdipCreateFontFamilyFromName() retval=0000000e ret=00420ee9 ... 002d:Call gdiplus.GdipCreateFont(00000000,10,00000001,00000003,008bdcb8) ret=00420ee9 002d:Ret gdiplus.GdipCreateFont() retval=00000002 ret=00420ee9 ... 002d:Call gdiplus.GdipMeasureString(02826d28,02d09288 L"0%",ffffffff,00000000,02827638,0277b268,0277ba60,008bdd00,008bdd18) ret=00420ee9 002d:trace:gdiplus:GdipMeasureString (02826D28, L"0%", -1, 00000000, (0.00,0.00,0.00,0.00), 0277B268, 0277BA60, 008BDD00, 008BDD18) 002d:Ret gdiplus.GdipMeasureString() retval=00000002 ret=00420ee9 ... 0009:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,03b1dcd0 L"2019-12-29 16:12:25 : !!!!!! Crash Detected : "C:\Program Files (x86)\LinuxLive USB Creator\sources\LiLi\Graphics.au3" (618) : ==> Subscript used on non-accessible variable.:\r\nDllStructSetData($aInfo[0], "X", Int(($bar_width - DllStructGetData($aInfo[0], "Width")) / 2))\r\nDl"...,00000131,00000000,00000000,00000000,00000000) ret=00463901 --- snip ---
The problem starts already when 'GdipCreateFontFamilyFromName' fails. The array subscript problem from 'GdipMeasureString' call (https://www.autoitscript.com/autoit3/docs/libfunctions/_GDIPlus_GraphicsMeas...) is just a follow-up error.
'winetricks -q arial' or Wine-Staging works around as usual.
* bug 32323 ("Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF apps require either Arial or Verdana to be installed") * bug 32342 ("Multiple applications and games using 'Webkit' or 'Blink' web browser engine crash on startup ('Arial' and 'Times New Roman' font face name validation)") * various separated app bugs mentioning 'Arial' requirement and even have other apps duplicates linked to them, despite specific app name in title(!)
Quite messy situation.
$ sha1sum LinuxLive\ USB\ Creator\ 2.8.29.exe 1fbd22223bb5dbd88ac3d8e81231210b564d4850 LinuxLive USB Creator 2.8.29.exe
$ du -sh LinuxLive\ USB\ Creator\ 2.8.29.exe 4.8M LinuxLive USB Creator 2.8.29.exe
$ wine --version wine-5.0-rc3
Regards