[Bug 35452] New: Warhammer 40,000: Dawn of War II: does not start, unhandled exception

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jan 26 04:41:57 CST 2014


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 at winehq.org
          Reporter: marc.bessieres at 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&iTestingId=81599


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 at 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

-- 
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