[Bug 32715] LiLi USB Creator 2.8 crashes on ISO image selection (needs 'Arial' font)

WineHQ Bugzilla wine-bugs at winehq.org
Sun Dec 29 09:44:37 CST 2019


https://bugs.winehq.org/show_bug.cgi?id=32715

Anastasius Focht <focht at 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 at 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 at 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_GraphicsMeasureString.htm)
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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list