http://bugs.winehq.org/show_bug.cgi?id=35452
Bug ID: 35452 Summary: Warhammer 40,000: Dawn of War II: does not start, unhandled exception Product: Wine Version: 1.7.11 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: marc.bessieres@gmail.com Classification: Unclassified
Created attachment 47319 --> http://bugs.winehq.org/attachment.cgi?id=47319 The console output
I use, on opensuse 13.1 ~/> wine --version wine-1.7.11
I used winetricks to by pass bug Bug 23532 winetricks xlive msasn1
and I disabled dwrite to be able to see some fonts to register on Steam as stated in appdb https://appdb.winehq.org/objectManager.php?sClass=version&iId=19444
Then when I launch the game within Steam I have after a few seconds a box to send data/files to the provider. I don't see anything in the terminal output that would explain (to me) the reason of the error.
Log of the crash handler shows an exception unhandled drive_c/users/guest/Temp: total used in directory 16876 available 34674068 drwxr-xr-x 2 guest users 4096 20 janv. 21:39 . -rw-r--r-- 1 guest users 4658 20 janv. 21:03 bugsplat.log -rw-r--r-- 1 guest users 1143106 20 janv. 21:03 DOW2UUCD10N0.dmp
tail bugsplat.log
2014-01-20 21:03:43 Entered Unhandled Exception Filter 2014-01-20 21:03:48 Minidump file successfully saved C:\users\guest\Temp\DOW2UUCD10N0.dmp 2014-01-20 21:03:48 Launching BsSndRpt.exe "BsSndRpt.exe" /i "C:\users\guest\Temp\BsSndRpt.ini"
In addition in : My Games/Dawn of War 2/Logfiles: total used in directory 16 available 34674016 -rw-r--r-- 1 guest users 1028 20 janv. 21:08 warnings.txt
I found:
21:08:32.23 -- DOW2 Warnings Log -- 21:08:32.23 C:\Program Files (x86)\Steam\SteamApps\common\Dawn of War 2\DOW2.exe started at 2014-01-20 21:08 21:08:32.23 OS NT 5.1, 3958 MB Physical Memory, 1685 Mb Physical Available, 4096 Mb Virtual Available 21:08:32.25 RUN OPTIONS: -logs 21:08:32.25 WORKING DIR: 'C:\Program Files (x86)\Steam\SteamApps\common\Dawn of War 2' 21:08:32.25 USER: 'guest' 21:08:32.29 MOD -- Initializing mod 'DOW2', version '2.6.0', locale 'french'. 21:08:32.33 APP - Multi-threading Enabled 21:08:32.33 XTHREAD: Detected 8 core(s) with 8 hardware thread(s) 21:08:32.34 ParentalControls: Games Explorer found. 21:08:32.34 ParentalControls: Module found. 21:08:32.34 ParentalControls: Dawn of War II IGameExplorer::VerifyAccess() call succeeded (0x00000000). 21:08:32.34 ParentalControls: Dawn of War II access granted. 21:08:32.75 MOD -- Failed to verify content catalog integrity. 21:08:32.75 Content management system isn't properly initialized.
This fits the text in the appdb of the "retribution" expansion pack of DoW2
http://appdb.winehq.org/objectManager.php?sClass=version&iId=22942&i...
This seems to indicate a wintrust issue. As there is no winetricks for it, I tried to trace it with:
WINEDEBUG=+relay,+wintrust wine Steam.exe 2>&1 | tee logfile
And it showed a few lines before opening the log file named bugsplat.log, a call to CryptCATOpen:
002d:Call wintrust.CryptCATOpen(0033e784 L"C:\Program Files (x86)\Steam\SteamApps\common\Dawn of War 2\content.cat",00000002,001c3500,00000000,00000000) ret=00734750 trace:wintrust:CryptCATOpen L"C:\Program Files (x86)\Steam\SteamApps\common\Dawn of War 2\content.cat", 2, 1c3500, 0, 0 002d:Call KERNEL32.CreateFileW(0033e784 L"C:\Program Files (x86)\Steam\SteamApps\common\Dawn of War 2\content.cat",80000000,00000001,00000000,00000007,00000000,00000000) ret=7dcf72f9 002d:Ret KERNEL32.CreateFileW() retval=ffffffff ret=7dcf72f9 002d:Ret wintrust.CryptCATOpen() retval=ffffffff ret=00734750 002d:Call ntdll.RtlFreeHeap(06272000,00000000,0627c268) ret=003e82f1 002d:Ret ntdll.RtlFreeHeap() retval=00000001 ret=003e82f1 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 002d:Call KERNEL32.GetSystemTimeAsFileTime(0033f270) ret=7818114c 002d:Ret KERNEL32.GetSystemTimeAsFileTime() retval=01cf1618 ret=7818114c 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 0048:Call KERNEL32.WaitForSingleObject(000002c8,00000000) ret=3f01037b 002d:Call KERNEL32.WriteFile(0000023c,0033f790,00000041,0033f2ec,00000000) ret=0153bdf8 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Ret KERNEL32.WriteFile() retval=00000001 ret=0153bdf8 0048:Call KERNEL32.WaitForSingleObject(000003c4,00000000) ret=3f01037b 002d:Call KERNEL32.WriteFile(0000023c,0033f31c,00000002,0033f314,00000000) ret=0153bdf8 002d:Ret KERNEL32.WriteFile() retval=00000001 ret=0153bdf8 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Call KERNEL32.GetSystemTimeAsFileTime(0033f330) ret=7818114c 002d:Ret KERNEL32.GetSystemTimeAsFileTime() retval=01cf1618 ret=7818114c 0048:Call KERNEL32.WaitForSingleObject(000003c4,00000000) ret=3f01037b 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 002d:Call KERNEL32.WriteFile(0000023c,0033f850,00000044,0033f3ac,00000000) ret=0153bdf8 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Ret KERNEL32.WriteFile() retval=00000001 ret=0153bdf8 0048:Call KERNEL32.WaitForSingleObject(00000434,00000000) ret=3f01037b 002d:Call KERNEL32.WriteFile(0000023c,0033f3dc,00000002,0033f3d4,00000000) ret=0153bdf8 002d:Ret KERNEL32.WriteFile() retval=00000001 ret=0153bdf8 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 0048:Call KERNEL32.WaitForSingleObject(00000434,00000000) ret=3f01037b 002d:Call KERNEL32.GetLastError() ret=78132dba 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=78132dba 002d:Call KERNEL32.UnhandledExceptionFilter(0033f7b8) ret=7bc974c5 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Call KERNEL32.InterlockedExchange(10037e34,10000000) ret=10004fe0 0048:Call KERNEL32.WaitForSingleObject(0000044c,00000000) ret=3f01037b 002d:Ret KERNEL32.InterlockedExchange() retval=10000000 ret=10004fe0 002d:Call KERNEL32.GetSystemTimeAsFileTime(0033f52c) ret=1000c08a 002d:Ret KERNEL32.GetSystemTimeAsFileTime() retval=01cf1618 ret=1000c08a 002d:Call KERNEL32.GetLastError() ret=10012c58 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=10012c58 002d:Call KERNEL32.GetLastError() ret=10012c58 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=10012c58 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Call KERNEL32.GetLastError() ret=10012c58 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=10012c58 0048:Call KERNEL32.WaitForSingleObject(0000044c,00000000) ret=3f01037b 002d:Call KERNEL32.GetTimeZoneInformation(10038250) ret=10014da3 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 0048:Call KERNEL32.WaitForSingleObject(0000050c,00000000) ret=3f01037b 002d:Ret KERNEL32.GetTimeZoneInformation() retval=00000001 ret=10014da3 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Call KERNEL32.WideCharToMultiByte(00000000,00000000,10038254 L"Central Europe Standard Time",ffffffff,10034d08,0000003f,00000000,0033f4a4) ret=10014e1d 0048:Call KERNEL32.WaitForSingleObject(0000050c,00000000) ret=3f01037b 002d:Ret KERNEL32.WideCharToMultiByte() retval=0000001d ret=10014e1d 002d:Call KERNEL32.WideCharToMultiByte(00000000,00000000,100382a8 L"Central Europe Daylight Time",ffffffff,10034d48,0000003f,00000000,0033f4a4) ret=10014e51 002d:Ret KERNEL32.WideCharToMultiByte() retval=0000001d ret=10014e51 002d:Call KERNEL32.GetLastError() ret=10012c58 0048:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=3f01037b 002d:Ret KERNEL32.GetLastError() retval=00000057 ret=10012c58 002d:Call KERNEL32.GetTempPathA(00000104,0033f590) ret=1000507c 002d:Ret KERNEL32.GetTempPathA() retval=00000014 ret=1000507c 0048:Call KERNEL32.QueryPerformanceCounter(0208e480) ret=3f00e506 002d:Call shlwapi.PathAppendA(0033f590 "C:\users\guest\Temp\",1002c794 "bugsplat.log") ret=1000508b 0048:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=3f00e506
And then I found the following extract from wiki.winehq.org/Wintrust:
CryptCATOpen attempts to get the attribute cert portions of the catalog file, which is a CMS signed message containing a CTL. Attribute certs are unimplemented in Crypt32, so this is essentially dead code at the moment.
So I would imagine it comes from an issue in CryptCATOpen. In addition when I look at the code, I see that In CryptCATOpen there should have been more than only a call to CreateFileW (line 866)
842 * CryptCATOpen (WINTRUST.@) 843 */ 844 HANDLE WINAPI CryptCATOpen(LPWSTR pwszFileName, DWORD fdwOpenFlags, HCRYPTPROV hProv, 845 DWORD dwPublicVersion, DWORD dwEncodingType) 846 { 847 HANDLE file, hmsg; 848 BYTE *buffer = NULL; 849 DWORD size, flags = OPEN_EXISTING; 850 struct cryptcat *cc; 851 852 TRACE("%s, %x, %lx, %x, %x\n", debugstr_w(pwszFileName), fdwOpenFlags, 853 hProv, dwPublicVersion, dwEncodingType); 854 855 if (!pwszFileName) 856 { 857 SetLastError(ERROR_INVALID_PARAMETER); 858 return INVALID_HANDLE_VALUE; 859 } 860 861 if (!dwEncodingType) dwEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING; 862 863 if (fdwOpenFlags & CRYPTCAT_OPEN_ALWAYS) flags |= OPEN_ALWAYS; 864 if (fdwOpenFlags & CRYPTCAT_OPEN_CREATENEW) flags |= CREATE_NEW; 865 866 file = CreateFileW(pwszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, flags, 0, NULL); 867 if (file == INVALID_HANDLE_VALUE) return INVALID_HANDLE_VALUE; 868 869 size = GetFileSize(file, NULL); 870 if (!(buffer = HeapAlloc(GetProcessHeap(), 0, size))) 871 { 872 CloseHandle(file); 873 SetLastError(ERROR_OUTOFMEMORY); 874 return INVALID_HANDLE_VALUE; 875 } 876 if (!(hmsg = CryptMsgOpenToDecode(dwEncodingType, 0, 0, hProv, NULL, NULL))) 877 { 878 CloseHandle(file); 879 HeapFree(GetProcessHeap(), 0, buffer); 880 return INVALID_HANDLE_VALUE; 881 }
So I checked it the file existed, and it does.
ll DoW2/drive_c/Program\ Files\ (x86)/Steam/SteamApps/common/Dawn\ of\ War\ 2/content.cat -rw-r--r-- 1 guest users 5861 22 janv. 21:46 DoW2/drive_c/Program Files (x86)/Steam/SteamApps/common/Dawn of War 2/content.cat guest@linux-w330:~>
So I don't know what to do anymore. I can perform any trace needed. May be the CryptCATopen is a red herring, so I can trace anything else if needed
http://bugs.winehq.org/show_bug.cgi?id=35452
--- Comment #1 from marc.bessieres@gmail.com --- Created attachment 47320 --> http://bugs.winehq.org/attachment.cgi?id=47320 The crash handler from warhammer
This is the window that opens when the game crashes at startup
http://bugs.winehq.org/show_bug.cgi?id=35452
Adam Bolte abolte@systemsaviour.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |abolte@systemsaviour.com
--- Comment #2 from Adam Bolte abolte@systemsaviour.com --- This issue also affects Dawn of War 2: Retribution, and has a (painful) work-around involving native wintrust and msasn1 DLLs to get around the content unlock system. See this link for an explanation of how this is thought to work:
http://www.corsix.org/content/dawn-war-ii-unlockable-content
Additionally, this issue causes the contents of content.cat to be nuked upon each execution attempt of the game (either DoW2 or DoW2: Retribution), so you need to keep a backup handy for testing (or use the "Verify Integrity of Game Cache" button in Steam, which is very slow), and restore the backup every time to avoid the BugSplat window.
This procedure is described in more detail here:
http://appdb.winehq.org/objectManager.php?sClass=version&iId=22942&i...
Also, see Bug 35553 (which I just opened) which also prevents the game from running, and that bug (unlike this one) does not have a known work-around. Bug 35553 is exclusive to Dawn of War 2 (not Retribution).
https://bugs.winehq.org/show_bug.cgi?id=35452
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW URL| |http://store.steampowered.c | |om/app/15620/ CC| |focht@gmx.net Component|-unknown |wintrust Summary|Warhammer 40,000: Dawn of |Warhammer 40,000: Dawn of |War II: does not start, |War II (Steam) crashes on |unhandled exception |startup, reporting 'Failed | |to verify content catalog | |integrity' Ever confirmed|0 |1
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
since multiple people experienced this -> confirming. Refining fields based on the comments.
Regards
https://bugs.winehq.org/show_bug.cgi?id=35452
Béla Gyebrószki gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gyebro69@gmail.com
--- Comment #4 from Béla Gyebrószki gyebro69@gmail.com --- GfWL was removed a year ago from both DoW2 and DoW2:Retribution on Steam. I can start both games with only native d3dx9_36 installed (Retribution needs native msvcr80.dll, that's bug #39192).
Please retest in Wine 1.7.50 (or newer) and report back whether or not the games work for you.
wine-1.7.50-194-g99ecebe
https://bugs.winehq.org/show_bug.cgi?id=35452
--- Comment #5 from Adam Bolte abolte@systemsaviour.com --- Just did a clean 32-bit Windows XP wineprefix install of Steam and DoW2 using Wine 1.7.51. Tested for 5 minutes, and the game worked like native without any modifications or DLL overrides. At a glance, that's probably worth a Platinum score.
Then I did the same thing (another new clean wineprefix) for DoW2 Retribution, and that launched and ran too. No graphics though, but I could hear the sound. I didn't try using the native d3dx9_36, but that's another bug.
So no more bug splats; I think this can be marked as fixed, although it's not clear if it was the game update or Wine that resolved it.
https://bugs.winehq.org/show_bug.cgi?id=35452
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com, | |super_man@post.com
--- Comment #6 from super_man@post.com --- (In reply to Adam Bolte from comment #5)
Just did a clean 32-bit Windows XP wineprefix install of Steam and DoW2 using Wine 1.7.51. Tested for 5 minutes, and the game worked like native without any modifications or DLL overrides. At a glance, that's probably worth a Platinum score.
Then I did the same thing (another new clean wineprefix) for DoW2 Retribution, and that launched and ran too. No graphics though, but I could hear the sound. I didn't try using the native d3dx9_36, but that's another bug.
So no more bug splats; I think this can be marked as fixed, although it's not clear if it was the game update or Wine that resolved it.
https://bugs.winehq.org/show_bug.cgi?id=35452
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wylda@volny.cz Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #7 from Wylda wylda@volny.cz --- Reported fixed.
https://bugs.winehq.org/show_bug.cgi?id=35452
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.9.22.