[Bug 5253] Starcraft/Diablo/Battle.net crashes from font metrics problem

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 7 05:38:55 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=5253





--- Comment #118 from Saulius K. <saulius2 at gmail.com>  2010-08-07 05:38:53 ---
I am unable to identify substitution of the font of interest.  

If I only put Impact.TTF into "drive_c/windows/fonts", Diablo still crashes. 
Replacing the file with Arial.TTF in this dir gives me quite different +font
log.

In the case of crash I see WineEngInit() is clearly being called a bit earlier
in the process of wineboot.exe.  

In this case "services.exe" is also started earlier than ReadFontDir() from the
"winemenubuilder.exe" finds the font being tested (Impact.TTF).  If I replace
the font and things don't crash, then ReadFontDir() finds Arial.TTF way before
"services.exe" is started.

Then there are differences in the AddFontToList() action:

 0009:warn:font:AddFontToList Ignoring font ".../wine/fonts//vgasysg.fon"/(nil)
 0009:trace:font:ReadFontDir Found "vgasysr.fon" in ".../wine/fonts/"
 0009:trace:font:AddFontToList Loading font file ".../wine/fonts//vgasysr.fon"
index 0
-0009:warn:font:AddFontToList Ignoring font ".../wine/fonts//vgasysr.fon"/(nil)
+0019:trace:font:WineEngCreateFontInstance L"System", h=16, it=0, weight=400,
PandF=22, charset=0 orient 0 escapement 0
 0009:trace:font:ReadFontDir Found "vgasyst.fon" in ".../wine/fonts/"
-0009:trace:font:AddFontToList Loading font file ".../wine/fonts//vgasyst.fon"
index 0
+0019:trace:font:WineEngCreateFontInstance DC transform 1.000000 0.000000
0.000000 1.000000
+0019:trace:font:WineEngCreateFontInstance returning cached gdiFont(0x11ae28)
for hFont 0x7c
+0019:trace:font:X11DRV_SelectFont hdc=0x250, hfont=0x7c
+0019:trace:font:X11DRV_SelectFont gdiFont = 0x11ae28
+0019:trace:font:update_font_code_page charset 0 => cp 1252
 0009:warn:font:AddFontToList Ignoring font ".../wine/fonts//vgasyst.fon"/(nil)
 0009:trace:font:ReadFontDir Found "vgas1255.fon" in ".../wine/fonts/"
 0009:trace:font:AddFontToList Loading font file ".../wine/fonts//vgas1255.fon"
index 0

0009 thread is the main thread of Diablo.
0019 thread is the main thread of explorer.exe

If 0019 are filtered out, in the case of crash we see two lines disappearing:

-0009:warn:font:AddFontToList Ignoring font ".../wine/fonts//vgasysr.fon"/(nil)
-0009:trace:font:AddFontToList Loading font file ".../wine/fonts//vgasyst.fon"
index 0

Seems like some interprocess race.

Or probably logging engine has eaten them up.  I see quite a few broken lines
in my +font logs.

load_fontconfig_fonts() was called 668 times in the case of crash.  In the case
of success the number is reduced to 446.  This is surprising as non-crashing
case generates 2x bigger log.

Could race condition be a cause of this bug?

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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