https://bugs.winehq.org/show_bug.cgi?id=45795
Bug ID: 45795 Summary: Nvidia GeForce Now installer aborts due to failure to process xml config Product: Wine Version: 3.15 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: msxml3 Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as it says.
The sub-installer can be run directly after executing 'GeForceNOW-release.exe'
--- snip --- $ pwd
/home/focht/.wine/drive_c/GeForceNOWInstallerTemp
$ file *
EULA.txt: ASCII text, with very long lines, with CRLF line terminators GeForceNOW: directory license.txt: Non-ISO extended-ASCII text, with very long lines, with CRLF line terminators NVI2: directory setup.cfg: XML 1.0 document, ASCII text, with CRLF line terminators setup.exe: PE32 executable (GUI) Intel 80386, for MS Windows
$ WINEDEBUG=+seh,+relay,+msi,+ole,+variant,+msxml wine ./setup.exe >>log.txt 2>&1 ... 002a:trace:ole:apartment_getclassobject added new loaded dll L"C:\windows\system32\msxml3.dll" 002a:trace:ole:apartment_getclassobject calling DllGetClassObject 0x7cc36870 002a:Call msxml3.DllGetClassObject(0033f7f8,7e5ec928,0033f808) ret=7e50d2a5 002a:trace:msxml:DllGetClassObject {f5078f33-c551-11d3-89b9-0000f81fe221} {00000001-0000-0000-c000-000000000046} 0x33f808 ... 002a:trace:msxml:DOMClassFactory_AddRef (0x173188) ref = 1 002a:Ret msxml3.DllGetClassObject() retval=00000000 ret=7e50d2a5 ... 002a:trace:ole:apartment_release 290000cafe: after = 1 002a:trace:msxml:DOMClassFactory_CreateInstance (nil) {2933bf95-7b36-11d2-b20e-00c04f983e60} 0x33f80c 002a:trace:msxml:DOMDocument_create (30, 0x33f7ac) ... 002a:trace:msxml:xmldoc_add_refs (0x7c946550)->(1) 002a:trace:msxml:get_domdoc_from_xmldoc returning iface 0x178eb8 002a:trace:msxml:domdoc_QueryInterface (0x178ea0)->({2933bf95-7b36-11d2-b20e-00c04f983e60} 0x33f80c) 002a:trace:msxml:domdoc_AddRef (0x178ea0)->(2) 002a:trace:msxml:domdoc_Release (0x178ea0)->(1) 002a:trace:msxml:DOMClassFactory_Release (0x173188) ref = 0 ... 002a:Ret ole32.CoCreateInstance() retval=00000000 ret=1017f7b3 ... 002a:trace:msxml:domdoc_load (0x178ea0)->(0x33f870 {VT_BSTR: L"Z:\home\focht\Downloads\GeForceNOWInstallerTemp\setup.CFG"}) 002a:trace:msxml:create_uri L"Z:\home\focht\Downloads\GeForceNOWInstallerTemp\setup.CFG" ... 002a:trace:msxml:domdoc_load ret (0) ... 002a:Call oleaut32.VariantInit(0033f970) ret=1018af28 002a:trace:variant:VariantInit (0x33f970) 002a:Ret oleaut32.VariantInit() retval=0033f970 ret=1018af28 002a:Call oleaut32.VariantClear(0033f970) ret=10028d65 002a:trace:variant:VariantClear (0x33f970 {VT_EMPTY}) 002a:Ret oleaut32.VariantClear() retval=00000000 ret=10028d65 002a:Call oleaut32.SysAllocStringLen(00180e10 L"//setup",00000007) ret=10028d75 002a:trace:ole:SysAllocStringLen L"//setup" 002a:Ret oleaut32.SysAllocStringLen() retval=0016397c ret=10028d75 002a:trace:msxml:domdoc_selectNodes (0x178ea0)->(L"//setup" 0x33f9bc) 002a:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,0016397c L"//setup",ffffffff,00000000,00000000,00000000,00000000) ret=7cc68ae0 002a:Ret KERNEL32.WideCharToMultiByte() retval=00000008 ret=7cc68ae0 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000009) ret=7cc68a0d 002a:Ret ntdll.RtlAllocateHeap() retval=001731a0 ret=7cc68a0d 002a:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,0016397c L"//setup",ffffffff,001731a0,00000009,00000000,00000000) ret=7cc68b3a 002a:Ret KERNEL32.WideCharToMultiByte() retval=00000008 ret=7cc68b3a 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000024) ret=7cc7fbf9 002a:Ret ntdll.RtlAllocateHeap() retval=00180e28 ret=7cc7fbf9 002a:trace:msxml:create_selection (0x7c47d1b0, "//setup", 0x33f9bc) 002a:trace:msxml:xmldoc_add_refs (0x7c47d1b0)->(2) 002a:trace:msxml:registerNamespaces (0x7c91cb80) 002a:trace:msxml:XSLPattern_to_XPath ("//setup") 002a:trace:msxml:xslpattern_lex token: TOK_DblFSlash : // 002a:trace:msxml:xslpattern_lex token: TOK_NCName : setup 002a:trace:msxml:xslpattern_parse Got UnprefixedName: "setup" 002a:trace:msxml:xslpattern_parse Got AbbreviatedAbsoluteLocationPath: "//*[name()='setup']" 002a:trace:msxml:XSLPattern_to_XPath => "//*[name()='setup']" 002a:trace:msxml:create_selection found 1 matches 002a:Call ntdll.RtlFreeHeap(00110000,00000000,001731a0) ret=7cc68a35 002a:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7cc68a35 002a:Call oleaut32.VariantClear(0033f970) ret=10027eca 002a:trace:variant:VariantClear (0x33f970 {VT_BSTR: L"//setup"}) 002a:Call ntdll.RtlSizeHeap(00110000,00000000,00163978) ret=7e52da26 002a:Ret ntdll.RtlSizeHeap() retval=00000020 ret=7e52da26 002a:Ret oleaut32.VariantClear() retval=00000000 ret=10027eca 002a:Call ntdll.RtlFreeHeap(00110000,00000000,00180e00) ret=10029306 002a:Ret ntdll.RtlFreeHeap() retval=00000001 ret=10029306 002a:Call oleaut32.VariantInit(0033f978) ret=1018863c 002a:trace:variant:VariantInit (0x33f978) 002a:Ret oleaut32.VariantInit() retval=0033f978 ret=1018863c 002a:trace:msxml:domselection_get__newEnum (0x180e28)->(0x33f93c) 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000018) ret=7cc7fbf9 002a:Ret ntdll.RtlAllocateHeap() retval=00173200 ret=7cc7fbf9 002a:trace:msxml:domselection_AddRef (0x180e28)->(2) 002a:trace:msxml:enumvariant_AddRef (0x173200)->(1) 002a:trace:msxml:enumvariant_QueryInterface (0x173200)->({00020404-0000-0000-c000-000000000046} 0x33f954) 002a:trace:msxml:enumvariant_AddRef (0x173200)->(2) 002a:trace:msxml:enumvariant_AddRef (0x173200)->(3) 002a:trace:msxml:enumvariant_Release (0x173200)->(2) 002a:trace:msxml:enumvariant_Release (0x173200)->(1) 002a:Call oleaut32.VariantClear(0033f978) ret=1006be44 002a:trace:variant:VariantClear (0x33f978 {VT_EMPTY}) 002a:Ret oleaut32.VariantClear() retval=00000000 ret=1006be44 002a:trace:msxml:enumvariant_Next (0x173200)->(1 0x33f978 0x33f94c) 002a:trace:msxml:domselection_get_item (0x180e28)->(0 0x33f980) 002a:trace:msxml:create_node type 1 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=7cc4ea42 002a:Ret ntdll.RtlAllocateHeap() retval=00180e00 ret=7cc4ea42 002a:trace:msxml:xmldoc_add_refs (0x7c47d1b0)->(3) 002a:trace:msxml:domelem_QueryInterface (0x180e00)->({2933bf80-7b36-11d2-b20e-00c04f983e60} 0x33f838) 002a:trace:msxml:domelem_AddRef (0x180e00)->(2) 002a:trace:msxml:domelem_Release (0x180e00)->(1) 002a:trace:msxml:domselection_nextNode (0x180e28)->(0x33f8bc) 002a:Call oleaut32.VariantChangeType(0033f978,0033f978,00000000,0000000d) ret=100a2638 002a:trace:variant:VariantChangeTypeEx (0x33f978 {VT_DISPATCH: 0x180e18},0x33f978 {VT_DISPATCH: 0x180e18},0x00000400,0x0000,VT_UNKNOWN) 002a:trace:variant:VariantClear (0x33f838 {VT_EMPTY}) 002a:trace:variant:VariantClear (0x33f828 {VT_EMPTY}) 002a:trace:variant:VariantCopyInd (0x33f828 {VT_EMPTY},0x33f978 {VT_DISPATCH: 0x180e18}) 002a:trace:variant:VariantCopy (0x33f828 {VT_EMPTY},0x33f978 {VT_DISPATCH: 0x180e18}) 002a:trace:variant:VariantClear (0x33f828 {VT_EMPTY}) 002a:trace:msxml:domelem_AddRef (0x180e00)->(2) 002a:trace:variant:VARIANT_Coerce (0x33f838 {VT_EMPTY},0x00000400,0x0000,0x33f828 {VT_DISPATCH: 0x180e18},VT_UNKNOWN) 002a:trace:msxml:domelem_QueryInterface (0x180e00)->({00000000-0000-0000-c000-000000000046} 0x33f840) 002a:trace:msxml:domelem_AddRef (0x180e00)->(3) 002a:trace:variant:VariantCopy (0x33f978 {VT_DISPATCH: 0x180e18},0x33f838 {VT_UNKNOWN: 0x180e18}) 002a:trace:variant:VariantClear (0x33f978 {VT_DISPATCH: 0x180e18}) 002a:trace:msxml:domelem_Release (0x180e00)->(2) 002a:trace:msxml:domelem_AddRef (0x180e00)->(3) 002a:trace:variant:VariantClear (0x33f838 {VT_UNKNOWN: 0x180e18}) 002a:trace:msxml:domelem_Release (0x180e00)->(2) 002a:trace:variant:VariantClear (0x33f828 {VT_DISPATCH: 0x180e18}) 002a:trace:msxml:domelem_Release (0x180e00)->(1) 002a:trace:variant:VariantChangeTypeEx returning 0x00000000, 0x33f978 {VT_UNKNOWN: 0x180e18} 002a:Ret oleaut32.VariantChangeType() retval=00000000 ret=100a2638 002a:trace:msxml:domelem_QueryInterface (0x180e00)->({2933bf80-7b36-11d2-b20e-00c04f983e60} 0x33f93c) 002a:trace:msxml:domelem_AddRef (0x180e00)->(2) 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000080) ret=102de3b5 002a:Ret ntdll.RtlAllocateHeap() retval=00178f58 ret=102de3b5 002a:trace:msxml:domelem_AddRef (0x180e00)->(3) 002a:trace:msxml:domelem_Release (0x180e00)->(2) 002a:Call oleaut32.VariantClear(0033f978) ret=1006be44 002a:trace:variant:VariantClear (0x33f978 {VT_UNKNOWN: 0x180e18}) 002a:trace:msxml:domelem_Release (0x180e00)->(1) 002a:Ret oleaut32.VariantClear() retval=00000000 ret=1006be44 002a:trace:msxml:enumvariant_Next (0x173200)->(1 0x33f978 0x33f94c) 002a:trace:msxml:domselection_get_item (0x180e28)->(1 0x33f980) 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000078) ret=100292e1 002a:Ret ntdll.RtlAllocateHeap() retval=0017c6b0 ret=100292e1 002a:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0033f8e4) ret=102c71d8 002a:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b4473c3 ip=7b4473c3 tid=002a 002a:trace:seh:raise_exception info[0]=19930520 002a:trace:seh:raise_exception info[1]=0033f900 002a:trace:seh:raise_exception info[2]=1048dc68 002a:trace:seh:raise_exception eax=7b435899 ebx=0033f900 ecx=00000000 edx=0033f8c4 esi=0033f8c4 edi=0033f890 002a:trace:seh:raise_exception ebp=0033f868 esp=0033f804 cs=330023 ds=6332002b es=33002b fs=f7bf0063 gs=7bd0006b flags=00200212 002a:trace:seh:call_stack_handlers calling handler at 0x10300b71 code=e06d7363 flags=1 ... 002a:Call KERNEL32.OutputDebugStringW(001860f8 L" 0.155 | ERROR: [NVI2.NVInstaller] 2974@CNVInstaller::PreLoadFromConfig : COM error: Exception {0x80004005; File: TypedEnum.h; Line: 59}. \n") ret=1003cc17 --- snip ---
Winedbg session (second get_item() fails):
--- snip --- Wine-dbg>bt
Backtrace: =>0 0x000000007d64c96d domselection_get_item() [/home/focht/projects/wine/mainline-src/dlls/msxml3/selection.c:238] in msxml3 (0x000000000033f8d8) 1 0x000000007d64d5e4 enumvariant_Next+0xae() [/home/focht/projects/wine/mainline-src/dlls/msxml3/selection.c:513] in msxml3 (0x000000000033f918) 2 0x000000001006be5c in nvi2 (+0x6be5b) (0x000000000033f950) 3 0x000000001017f8a8 in nvi2 (+0x17f8a7) (0x000000000033f9e4) 4 0x0000000010066e8b in nvi2 (+0x66e8a) (0x000000000033fc1c) 5 0x00000000004025ae in setup (+0x25ad) (0x000000000033fd68) 6 0x0000000000405486 in setup (+0x5485) (0x000000000033fe64) 7 0x000000000041ffe8 in setup (+0x1ffe7) (0x000000000033feb0) 8 0x000000007b46dde6 call_process_entry+0x11() in kernel32 (0x000000000033fec8) 9 0x000000007b46df1f start_process+0x12c() [/home/focht/projects/wine/mainline-src/dlls/kernel32/process.c:1094] in kernel32 (0x000000000033ffd8) 10 0x000000007b46ddf2 start_process_wrapper+0x9() in kernel32 (0x000000000033ffec)
Wine-dbg>n ... Wine-dbg>n 248 if (index < 0 || index >= xmlXPathNodeSetGetLength(This->result->nodesetval)) ... Wine-dbg>n 251 *listItem = create_node(xmlXPathNodeSetItem(This->result->nodesetval, index)); ... Wine-dbg>n 252 This->resultPos = index + 1; Wine-dbg> 252 This->resultPos = index + 1; Wine-dbg> 254 return S_OK;
... Wine-dbg>bt
Backtrace: =>0 0x000000007d64c96d domselection_get_item() [/home/focht/projects/wine/mainline-src/dlls/msxml3/selection.c:238] in msxml3 (0x000000000033f8d8) 1 0x000000007d64d5e4 enumvariant_Next+0xae() [/home/focht/projects/wine/mainline-src/dlls/msxml3/selection.c:513] in msxml3 (0x000000000033f918) 2 0x000000001006be5c in nvi2 (+0x6be5b) (0x000000000033f950) 3 0x000000001017f8a8 in nvi2 (+0x17f8a7) (0x000000000033f9e4) 4 0x0000000010066e8b in nvi2 (+0x66e8a) (0x000000000033fc1c) 5 0x00000000004025ae in setup (+0x25ad) (0x000000000033fd68) 6 0x0000000000405486 in setup (+0x5485) (0x000000000033fe64) 7 0x000000000041ffe8 in setup (+0x1ffe7) (0x000000000033feb0) 8 0x000000007b46dde6 call_process_entry+0x11() in kernel32 (0x000000000033fec8) 9 0x000000007b46df1f start_process+0x12c() [/home/focht/projects/wine/mainline-src/dlls/kernel32/process.c:1094] in kernel32 (0x000000000033ffd8) 10 0x000000007b46ddf2 start_process_wrapper+0x9() in kernel32 (0x000000000033ffec)
Wine-dbg>n 239 domselection *This = impl_from_IXMLDOMSelection( iface ); Wine-dbg>n 241 TRACE("(%p)->(%d %p)\n", This, index, listItem); Wine-dbg>n 243 if(!listItem) Wine-dbg>n 246 *listItem = NULL; Wine-dbg>n 248 if (index < 0 || index >= xmlXPathNodeSetGetLength(This->result->nodesetval)) ... Wine-dbg>n 249 return S_FALSE; --- snip ---
The content of the XML file:
--- snip --- <?xml version="1.0" encoding="utf-8"?> <setup title="GeforceNow" enableNonUAC="true" version="00.00" installerMin="2.1002.83.512"> <include name="${{InstallerDllDirectory}}\presentations.cfg" select="/presentations/*"/> <include filter="not-manifest" name="${{InstallerDllDirectory}}\theme.cfg" select="/theme/*"/> <strings> </strings> <constraints> <platforms list="AMD64" level="critical" text="${{ErrorUnsupportedPlatform}}"/> <reject tests="PACKAGES" level="critical" text="${{ErrorNoPackagesToInstall}}"/> <reject tests="REQUIRED" level="critical" text="${{ErrorMissingRequiredPackages}}"/> <reject tests="FILES" level="critical" text="${{ErrorMissingPackageFiles}}"/> <reject tests="INSTALL, MSI" level="critical" text="${{ErrorInstallerAlreadyRunning}}"/> <reject tests="PNP" level="wait" text="${{WaitPnpAlreadyRunning}}"/> <reject tests="REBOOT" level="critical" text="${{ErrorInstallerNeedReboot}}"/> </constraints> <install> <search dir="."> <select name="**\*"/> <deselect name="english\**\*"/> <if filter="!x86"> <deselect name="**\x86\**\*"/> </if> <if filter="!amd64"> <deselect name="**\amd64\**\*"/> </if> <if filter="!xp"> <deselect name="**\WinXP\**\*"/> </if> <if filter="!minVista"> <deselect name="**\WinVista\**\*"/> </if> <if filter="!VistaAndWin7"> <deselect name="**\VistaAndWin7\**\*"/> </if> <if filter="!minWin8"> <deselect name="**\Win8\**\*"/> </if> </search> </install> <properties> <string name="EulaFile" value="${{InstallerDirectory}}\EULA.txt"/> <string name="ArpIcon" value="${{LocalUserAppData}}\NVIDIA Corporation\GeForceNOW\CEF\GeForceNOW.exe,0"/> <string name="TimeOutForPlugin" value="50000" /> <string name="ProductType" value="251"/> <bool name="SilentInstall" value="false"/> <bool name="noeula" value="true"/> </properties> <options> <bool name="clean" property="CleanInstall"/> <bool name="prestage" property="PrestageInstall"/> <bool name="validate" property="ValidationInstall"/> <string name="validationFile" property="ValidationFile"/> <bool name="forcereboot" property="RebootRequired"/> <bool name="noreboot" property="IgnoreReboot"/> <bool name="k" property="RebootRequired"/> <bool name="n" property="IgnoreReboot"/> <bool name="passive" property="ProgressOnly"/> <bool name="noeula" property="SkipEula"/> <bool name="nofinish" property="SkipFinish"/> <bool name="ignorepnp" property="IgnorePnpFlag"/> <bool name="progresswitheula" property="ProgressWithEula"/> <bool name="s" property="SilentInstall" /> </options> <properties> </properties> <forms> </forms> <manifest> <file name="setup.exe"/> <file name="setup.cfg"/> <file name="eula.txt"/> <file name="${{InstallerDllDirectory}}/NVI2.dll"/> <file name="${{InstallerDllDirectory}}/NVI2SystemService32.sys"/> <file name="${{InstallerDllDirectory}}/NVI2SystemService64.sys"/> <file name="${{InstallerDllDirectory}}/NvInstallerUtil.dll" core="true"/> <file name="${{InstallerDllDirectory}}/NVI2UI.dll"/> <file name="${{InstallerDllDirectory}}/NVPrxy32.dll"/> <file name="${{InstallerDllDirectory}}/NVPrxy64.dll"/> <file name="${{InstallerDllDirectory}}/theme.cfg"/> <file name="${{InstallerDllDirectory}}/*.ui.forms"/> <file name="${{InstallerDllDirectory}}/*.ui.strings"/> <file name="${{InstallerDllDirectory}}/*.png"/> <file name="${{InstallerDllDirectory}}/*.jpg"/> </manifest> </setup> --- snip ---
Not sure, could be a dupe of existing msxml3/libxml2 bugs.
https://bugs.winehq.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NE...
Maybe Nikolay can tell. CC'ing.
'winetricks -q msxml3' makes it work (there are follow-up bugs though).
$ sha1sum GeForceNOW-release.exe 9c7c50f9572464c4f1205eede2534580937481c8 GeForceNOW-release.exe
$ du -sh GeForceNOW-release.exe 59M GeForceNOW-release.exe
$ wine --version wine-3.15-94-gbfe8510ec0
Regards