http://bugs.winehq.org/show_bug.cgi?id=28898
Bug #: 28898 Summary: Diablo 3 beta multi-threaded installer freezes (RtlpWaitForCriticalSection block) Product: Wine Version: 1.3.31 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: lyon@pvfree.net Classification: Unclassified
Created attachment 37126 --> http://bugs.winehq.org/attachment.cgi?id=37126 winedbg --command 'bt all'
In short:
Diablo 3 beta online installer freezes during the process of downloading files, repeatedly emitting this error message every minute:
000b:err:ntdll:RtlpWaitForCriticalSection section 0x9500b4 "?" wait timed out in thread 000b, blocked by 0020, retrying (60 sec)
Longer description:
Diablo 3 uses a multi-threaded akamai-like daemon (Agent.exe) for downloading files on background.
The installer itself Diablo-III-Beta-enUS-Setup.exe is just a tool that prepares the basic installation somewhere into c:\users\Public\Application Data/Battle.net, executes Agent.exe and starts Diablo III Launcher afterwards. In default 1.3.31-git wine installation Launcher is never started as the installer progressbar freezes in about 2/3 and RtlpWaitForCriticalSection error message is being spat out every minute.
As shown in the backtrace, the frozen thread belongs to Agent.exe that usually has about 10 threads running and it never wakes up.
Anyway, this problem was not present in Wine 1.2 series so I started to experiment with bisect and found out, that this issue started to appear between 1.3.3 and 1.3.4, specifically these two commits:
cf72f406ec7cdfebbd5135ede6e45547ca82dae0 9c2203123df76a1db1b11b633d0ccab003045fe2
Reverting those against current git snapshot makes the installer working again, at least in terms of downloading several files and successfully spawning the launcher. NOTE: Agent.exe is used by launcher as well for further game data download and installation, but although it is very unstable and crashes every now and then, the revert makes it possible to eventually install the game, without thread blocks. Agent.exe unstability is probably a different bug present already in Wine 1.2.
During the trace a clean wineprefix was used and no DLL overrides were enabled.
If any more information is needed, just let me know, I'm willing to help.
Additional info:
Diablo-III-Beta-enUS-Setup.exe can be downloaded freely from the internet, it's just an installer and it does not require any Battle.net account for installation (would be necessary for gamepaly only). I recommend looking for links leading to edgesuite.net, which is the official source for Battle.net akamai service.