http://bugs.winehq.org/show_bug.cgi?id=16725
Summary: Intermittent deadlock in GDI32 between freetype_cs and GDI_Level Product: Wine Version: 1.1.11 Platform: Other OS/Version: other Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: gdi32 AssignedTo: wine-bugs@winehq.org ReportedBy: Paul.Hampson@Pobox.com
Running the Warhammer Online patch client (warpatcher.bin) I occasionally see a deadlock between freetype_cs and GDI_Level critical sections between two of the threads.
It appears that one thread is in WineEngGetCharWidth holding freetype_cs, and then calls GDI_AllocObject, descended from GetCharacterPlacementW called by Gecko.
The other thread is in FONT_SelectObject, and then calls WineEngCreateFontInstance, descended from a SelectObject call by libpatchui.dll from warpatcher.bin.
This code in FONT_SelectObject is marked FIXME so I guess this is known as a potential issue, but I can't see any bugs that specify this as a problem.
On the other hand, it looks to me like WineEngGetCharWidth should probably somehow have tried to lock the GDI_Level critical section before entering the freetype_cs critical section, if it is going to call things that might need to lock GDI_Level.
In this case, the program is trying to display a HTML-skinned interface of some kind. I'm not sure exactly what it's trying to do, but I can see how it'd have gecko and GDI running on the same thing.
Bug 16310 comment 9 suggests that it might be being caused by the same thing, but that's not confirmed there.
http://bugs.winehq.org/show_bug.cgi?id=16725
--- Comment #1 from Paul "TBBle" Hampson Paul.Hampson@Pobox.com 2009-01-02 10:39:50 --- Created an attachment (id=18395) --> (http://bugs.winehq.org/attachment.cgi?id=18395) Logs showing the deadlock occuring and the backtraces of the two affected threads
http://bugs.winehq.org/show_bug.cgi?id=16725
Paul "TBBle" Hampson Paul.Hampson@Pobox.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|enhancement |minor
--- Comment #2 from Paul "TBBle" Hampson Paul.Hampson@Pobox.com 2009-01-02 10:40:43 --- Setting severity to minor, workaround is to just kill and restart the patcher.
http://bugs.winehq.org/show_bug.cgi?id=16725
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #3 from Alexandre Julliard julliard@winehq.org 2009-01-29 14:13:19 --- This should be fixed now.
http://bugs.winehq.org/show_bug.cgi?id=16725
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alexandre Julliard julliard@winehq.org 2009-01-30 11:04:47 --- Closing bugs fixed in 1.1.14.