http://bugs.winehq.org/show_bug.cgi?id=28722
Bug #: 28722 Summary: Assassins Creed installer fails with GameuxInstallHelper.AddToGameExplorerW error 0x80040707 Product: Wine Version: 1.3.30 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: gameux AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello,
the installer fails with error message box shown:
--- snip --- Error Number: 0x80040707 Description: DLL function call crashed: GameuxInstallHelper.AddToGameExplorerW Setup will now terminate. --- snip ---
Trace log (+gameux) reveals:
--- snip --- ... 0026:trace:gameux:GameExplorer_create returning iface: 0x15a1020 0026:trace:gameux:GameExplorerImpl_QueryInterface (0x15a1020, {e7b2fb72-d728-49b3-a5f2-18ebf5f1349e}, 0x318d6c) 0026:trace:gameux:GameExplorerImpl_AddRef (0x15a1020): ref=2 0026:trace:gameux:GameExplorerImpl_Release (0x15a1020): ref=1 0026:trace:gameux:gameuxcf_Release (0x7d2c0bd4) 0026:Ret ole32.CoCreateInstance() retval=00000000 ret=008b390a 0026:fixme:gameux:GameExplorerImpl_VerifyAccess (0x15a1020, L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe", 0x318d88) 0026:trace:gameux:GameExplorerImpl_AddGame (0x15a1020, L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe", L"C:\Program Files\Ubisoft\Assassin's Creed", 0x3, {eb95a6e4-923b-4469-9443-6cf5d301f782}) 0026:trace:gameux:GAMEUX_RegisterGame (L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe", L"C:\Program Files\Ubisoft\Assassin's Creed", 0x3, {eb95a6e4-923b-4469-9443-6cf5d301f782}) ... 0026:Call KERNEL32.CreateThread(00000000,00000000,7d2b0560,00318c34,00000000,00318c84) ret=7d2b1a36 0026:Ret KERNEL32.CreateThread() retval=00000108 ret=7d2b1a36 0026:Call KERNEL32.WaitForSingleObject(00000108,ffffffff) ret=7d2b1a53 ... 002b:Starting thread proc 0x7d2b0560 (arg=0x318c34) 002b:trace:gameux:GAMEUX_ParseGDFBinary (0x318c8c)->sGDFBinaryPath = L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe" 002b:Call ole32.CoInitialize(00000000) ret=7d2b0715 ... 002b:Ret ole32.CoCreateInstance() retval=00000000 ret=7d2b074b ... 002b:Call urlmon.CreateURLMoniker(00000000,015a51ec L"res://C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe/DATA/__GDF_XML",0a34e718) ret=7d210c2a ... 002b:Call urlmon.CoInternetParseUrl(015a5f4c L"res://C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe/DATA/__GDF_XML",00000007,00000000,015a6000 L"\55a8\015d\0128\0011",00000065,0a34d1dc,00000000) ret=7cdb146d ... 002b:Call KERNEL32.LoadLibraryExW(015a600c L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe/DATA",00000000,00000002) ret=7cdb150a 002b:Ret KERNEL32.LoadLibraryExW() retval=00000000 ret=7cdb150a 002b:Call KERNEL32.LoadLibraryExW(015a600c L"C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe",00000000,00000002) ret=7cdb191a 002b:Ret KERNEL32.LoadLibraryExW() retval=00000000 ret=7cdb191a ... 0026:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=7d2b1a53 0026:Call KERNEL32.CloseHandle(00000108) ret=7d2b1a65 0026:Ret KERNEL32.CloseHandle() retval=00000001 ret=7d2b1a65 0026:trace:gameux:GAMEUX_WriteRegistryRecord (0x318c8c) 0026:trace:gameux:GAMEUX_buildGameRegistryPath (0x3, {eb95a6e4-923b-4469-9443-6cf5d301f782}, 0x318c84) ... 0026:trace:gameux:GAMEUX_buildGameRegistryPath result: 0x0, path: L"SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{EB95A6E4-923B-4469-9443-6CF5D301F782}" 0026:Call ole32.StringFromGUID2(00318ca8,00318c34,00000028) ret=7d2b1b04 0026:Ret ole32.StringFromGUID2() retval=00000027 ret=7d2b1b04 0026:Call advapi32.RegCreateKeyExW(80000002,015a4b40 L"SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{EB95A6E4-923B-4469-9443-6CF5D301F782}",00000000,00000000,00000000,000f013f,00000000,00318c88,00000000) ret=7d2b1b5d 0026:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=7d2b1b5d 0026:Call advapi32.RegSetValueExW(00000108,7d2b7180 L"ConfigApplicationPath",00000000,00000001,015a4600,00000054) ret=7d2b1ed2 0026:Ret advapi32.RegSetValueExW() retval=00000000 ret=7d2b1ed2 0026:Call advapi32.RegSetValueExW(00000108,7d2b71c0 L"ConfigGDFBinaryPath",00000000,00000001,015a1038,00000082) ret=7d2b1f8a 0026:Ret advapi32.RegSetValueExW() retval=00000000 ret=7d2b1f8a 0026:Call advapi32.RegSetValueExW(00000108,7d2b71e8 L"ApplicationId",00000000,00000001,00318c34,0000004e) ret=7d2b1ff2 0026:Ret advapi32.RegSetValueExW() retval=00000000 ret=7d2b1ff2 0026:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7d2b2012 ip=7d2b2012 tid=0026 0026:trace:seh:raise_exception info[0]=00000000 0026:trace:seh:raise_exception info[1]=00000000 0026:trace:seh:raise_exception eax=00000002 ebx=7d2bdff4 ecx=00000000 edx=00000000 esi=00000000 edi=00000108 0026:trace:seh:raise_exception ebp=00318c34 esp=00318bf4 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00010246 0026:trace:seh:call_vectored_handlers calling handler at 0x7e0cacf0 code=c0000005 flags=0 0026:trace:seh:call_vectored_handlers handler at 0x7e0cacf0 returned 0 0026:trace:seh:call_stack_handlers calling handler at 0x100ad572 code=c0000005 flags=0 ... 0026:Call user32.MessageBoxA(0003008c,00b70f68 "Error Number: 0x80040707\nDescription: DLL function call crashed: GameuxInstallHelper.AddToGameExplorerW\n\nSetup will now terminate.",00b71418 "Unhandled Exception",00000000) ret=100708ab --- snip ---
The crash location:
http://source.winehq.org/git/wine.git/blob/95ede76673df1dafb3e716a4617c57922...
bstrName and bstrDescription are NULL at this point, leading to crash.
Wine-dbg>p GameData {sGDFBinaryPath="C:\Program Files\Ubisoft\Assassin's Creed\AssassinsCreed_Dx9.exe", sGameInstallDirectory="C:\Program Files\Ubisoft\Assassin's Creed", installScope=GIS_ALL_USERS, guidInstanceId={Data1=0x7e77042, Data2=0xe63d, Data3=0x4c15, Data4="????"}, guidApplicationId={Data1=0, Data2=0, Data3=0, Data4=""}, bstrName=0x0(nil), bstrDescription=0x0(nil)}
GAMEUX_RegisterGame() has two HRESULT's defined, one var shadows the other hence preventing error propagation.
http://source.winehq.org/git/wine.git/blob/95ede76673df1dafb3e716a4617c57922...
http://source.winehq.org/git/wine.git/blob/95ede76673df1dafb3e716a4617c57922...
The gameux registration is actually called _before_ the real installation, hence the binaries are not yet in place (c:).
The binaries are present on media:
--- snip --- $ ls -l /media/ASSASSINS_CREED/System/ total 51640 -rw------- 1 focht focht 25671264 2008-03-06 19:01 AssassinsCreed_Dx10.exe -rw------- 1 focht focht 26150480 2008-03-06 19:01 AssassinsCreed_Dx9.exe -rw------- 1 focht focht 434824 2008-03-06 19:01 AssassinsCreed_Game.exe -rw------- 1 focht focht 619144 2008-03-06 19:00 AssassinsCreed_Launcher.exe dr-x------ 8 focht focht 304 2008-03-06 21:00 Resources --- snip ---
Regards