Hi,
I've been trying to get GTA: San Andreas, and Battlefield 2 running on Linux, so far without success.
I suspect they are running into the same bug, because they produce very similar output (ole fixmes). Both games will freeze at some point during the install.
Strangely, I don't see any errors, but I have provided an ole trace for each. Do you have any suggestions as to what the problem might be, or how to track it down?
Ivan Gyurdiev wrote:
Hi,
I've been trying to get GTA: San Andreas, and Battlefield 2 running on Linux, so far without success.
I suspect they are running into the same bug, because they produce very similar output (ole fixmes). Both games will freeze at some point during the install.
Strangely, I don't see any errors, but I have provided an ole trace for each. Do you have any suggestions as to what the problem might be, or how to track it down?
Thanks for reporting this. In order for the logs of these types of programs to make sense, you really need to give me one with +ole,+olerelay,+seh,+tid options. I suspect it is the following bug though:
In newer InstallShields, there is a marshaled object that contains a function with a VT_PTR -> VT_USERDEFINED( TKIND_ENUM ). This should be treated as "int *", but is actually treated as "int". This is due to some broken logic in the typelib marshaler that is designed to fix the problem with VT_PTR -> VT_USERDEFINED( TKIND_INTERFACE ) -> "IUnknown *", but where we should dereference the pointer any more. We probably need to use the logic in ITypeInfo::Invoke to appropriately transform the soup of pointers and userdefined types into something we can use. I should also need to check what things are accepted in the native version. i.e. is VT_PTR -> VT_PTR -> VT_USERDEFINED( TKIND_ENUM ) supported? If so, that isn't representable by the VARIANT vt's, so we would need to treat it differently than the ITypeInfo::Invoke case.
This is a high priority for me as this one bug prevents a number of installers from working correctly. However, I'm in the middle of some other work at the moment, so I don't know when I'll get around to it.
Thanks for reporting this. In order for the logs of these types of programs to make sense, you really need to give me one with +ole,+olerelay,+seh,+tid options. I suspect it is the following bug though:
I've attached the necessary logs to: http://bugs.winehq.org/show_bug.cgi?id=3108
Thanks for the reply...
Ivan Gyurdiev wrote:
Thanks for reporting this. In order for the logs of these types of programs to make sense, you really need to give me one with +ole,+olerelay,+seh,+tid options. I suspect it is the following bug though:
I've attached the necessary logs to: http://bugs.winehq.org/show_bug.cgi?id=3108
Hi Ivan,
I had a look through the logs, but I couldn't see anything too suspicious. I have Battlefield 2 here, but I don't have enough disk space to make it far enough into the installer to see the error. Hopefully it is just the known error I described.
Hi Ivan,
I had a look through the logs, but I couldn't see anything too suspicious. I have Battlefield 2 here, but I don't have enough disk space to make it far enough into the installer to see the error. Hopefully it is just the known error I described.
It freezes before that...
Yeah, I don't know what's wrong. Oliver said he's been able to install GTA, and I just tried CVS with Marcus' patch w/ no effect. I guess the problem lies elsewhere, but I don't know how to debug it - it just freezes with no suspicious output. Thank you for trying - at least the but that you noted should be fixed...
Ivan
--- Ivan Gyurdiev ivg2@cornell.edu wrote:
Hi Ivan,
I had a look through the logs, but I couldn't see anything too suspicious. I have Battlefield 2 here, but I don't have enough disk space to make it far enough into the installer to see the error. Hopefully it is just the known error I described.
It freezes before that...
Yeah, I don't know what's wrong. Oliver said he's been able to install GTA, and I just tried CVS with Marcus' patch w/ no effect. I guess the problem lies elsewhere, but I don't know how to debug it - it just freezes with no suspicious output. Thank you for trying - at least the but that you noted should be fixed...
I'll make an ole log and compair it to the one you posted on the bug page, hopefully that should identify the problems your having..
Incidentally, what kernel are you running? and how are you mounting you cd drives (supermount, ivman or automount etc...)
Oliver.
Ivan
___________________________________________________________ Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com
I'll make an ole log and compair it to the one you posted on the bug page, hopefully that should identify the problems your having..
Okay...I can update the log after Marcus' patch if that will help. I also see other ole-related patches posted recently that aren't in CVS yet.
Incidentally, what kernel are you running? and how are you mounting you cd drives (supermount, ivman or automount etc...)
2.6.12-1.1505_FC5 I believe the mounting's taken care of by hal/hotplug...gnome-volume-manager. It's just a Fedora system... there's no automount or supermount. If that doesn't work I just mount it myself. I'm not sure what the consequences of that are for multi-cd installers, but I haven't gotten far enough to find out. Anyway, GTA is just a single dvd.
--- Ivan Gyurdiev ivg2@cornell.edu wrote:
I'll make an ole log and compair it to the one you posted on the bug page, hopefully that
should
identify the problems your having..
Okay...I can update the log after Marcus' patch if that will help. I also see other ole-related patches posted recently that aren't in CVS yet.
Incidentally, what kernel are you running? and how are you mounting you cd drives (supermount, ivman or automount etc...)
2.6.12-1.1505_FC5 I believe the mounting's taken care of by hal/hotplug...gnome-volume-manager. It's just a Fedora system... there's no automount or supermount. If that doesn't work I just mount it myself. I'm not sure what the consequences of that are for multi-cd installers, but I haven't gotten far enough to find out. Anyway, GTA is just a single dvd.
That's pretty much the setup I have here too, (well gentoo but everything else is the same)
Oliver.
___________________________________________________________ How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos http://uk.photos.yahoo.com
Hi,
I still can't install GTA - in case this is useful, I've attached the portion of a trace (+ole +oleaut +seh +tid), which includes only the messages after I press Next on the last installer screen (which is where the installer freezes).
This is today's CVS..... maybe Olver can compare aganst his copy...
000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 490 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3e0d58)->ref is 55 000b:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3e0d58) index 0 000b:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3e0d58) index 1 000b:trace:ole:ITypeInfo_fnGetDocumentation (0x7f3e0d58) memid 40 Name(0x7fc95148) DocString((nil)) HelpContext((nil)) HelpFile((nil)) 000b:trace:ole:ITypeInfo_fnGetDocumentation (0x7f3e0d58) memid -1 Name(0x7fc95144) DocString((nil)) HelpContext((nil)) HelpFile((nil)) 000b:trace:ole:ITypeInfo_fnGetNames (0x7f3e0d58) memid=0x00000028 Maxname=10 000b:trace:ole:serialize_param (tdesc.vt 3) 000b:trace:ole:ClientRpcChannelBuffer_GetBuffer (0x7f47ce88)->(0x7fc950c4,{94f4a332-a2ae-11d3-8378-00c04f59fbe9}) 000b:trace:ole:ClientRpcChannelBuffer_GetBuffer -- 0 000b:trace:ole:RpcChannelBuffer_SendReceive (0x7fc950c4) iMethod=21 000b:trace:ole:apartment_addref a0000000d: before = 1 000b:trace:ole:stub_manager_int_addref before 1 000b:trace:ole:get_stub_manager_from_ipid found 0x7f47cc30 for ipid {00000004-000d-000a-c687-000f3dada1bc} 000b:trace:ole:TMStubImpl_AddRef (0x7f47d420)->(ref before=1) 000b:trace:ole:stub_manager_int_release after 1 000b:trace:ole:RpcChannelBuffer_SendReceive Calling apartment thread 0x0000000d... 000b:trace:ole:apartment_release a0000000d: after = 1 000b:trace:ole:CoWaitForMultipleHandles (0x00000000, 0xffffffff, 1, 0x7ff58b74, 0x7fc95048) 000b:trace:ole:CoWaitForMultipleHandles waiting for rpc completion or window message 000d:trace:ole:TMStubImpl_Invoke ... 000d:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 491 000d:trace:ole:ITypeInfo_fnAddRef (0x7f3e0d58)->ref is 56 000d:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3e0d58) index 0 000d:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3e0d58) index 1 000d:trace:ole:ITypeInfo_fnGetDocumentation (0x7f3e0d58) memid 40 Name(0xe806848) DocString((nil)) HelpContext((nil)) HelpFile((nil)) 000d:trace:ole:ITypeInfo_fnGetDocumentation (0x7f3e0d58) memid -1 Name(0xe806844) DocString((nil)) HelpContext((nil)) HelpFile((nil)) 000d:trace:ole:ITypeInfo_fnGetNames (0x7f3e0d58) memid=0x00000028 Maxname=10 000d:trace:ole:deserialize_param vt 3 at 0x7ff69eec 000d:trace:ole:_invoke Calling 0x3d41345e(7ebe0208,00080032,) 000d:trace:ole:_invoke returns 00000000 000d:trace:ole:serialize_param (tdesc.vt 3) 000d:trace:ole:ITypeInfo_fnRelease (0x7f3e0d58)->(55) 000d:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(491) 000d:trace:ole:TMStubImpl_Invoke returning 000d:trace:ole:TMStubImpl_Release (0x7f47d420)->(ref before=2) 000b:trace:ole:CoWaitForMultipleHandles waiting for rpc completion or window message 000b:trace:ole:CoWaitForMultipleHandles -- 0x00000000 000b:trace:ole:RpcChannelBuffer_SendReceive RPC call status: 0x0 000b:trace:ole:RpcChannelBuffer_SendReceive -- 0x00000000 000b:trace:ole:ITypeInfo_fnRelease (0x7f3e0d58)->(54) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(490) 000b:trace:ole:ITypeInfo_fnInvoke (0x7f3ce0b0)(0x7f4fa378,id=25,flags=0x00000003,0x7fca11a8,0x7fca1208,0x7fca1128,0x7fca116c) partial stub! 000b:trace:ole:dump_DispParms args=2 named args=0 000b:trace:ole:dump_Variant 0x7e9ae090->{VT_I4|VT_BYREF,0x7e9ae0bc} 000b:trace:ole:dump_Variant 0x7e9ae0a0->{VT_BSTR|VT_BYREF,0x7e9ae108} 000b:trace:ole:ITypeInfo2_fnGetFuncIndexOfMemId (0x7f3ce0b0) memid 0x00000019 invKind 0x0003 -> SUCCESS 000b:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3ce0b0) index 0 000b:trace:ole:ITypeInfo_fnInvoke invoking: memid is 00000019 Param 0: tdesc.vartype 8 (VT_BSTR) u.parmadesc.flags 1 u.parmadesc.lpex (nil) Param 1: tdesc.vartype 11 (VT_BOOL) u.parmadesc.flags 1 u.parmadesc.lpex (nil) Param 2: tdesc.vartype 26 (ptr to VT_BSTR) u.parmadesc.flags a u.parmadesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 56 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.parmadesc.flags 0 u.parmadesc.lpex (nil) 000b:fixme:ole:_copy_arg Should not use VariantChangeType here. (conversion from 0x4003 -> 0xb) 0000ffff 000b:trace:ole:_invoke Calling 0x37a93b3c(7f4fa378,7e8c1b3c,0000ffff,7e8b7d48,) 000b:trace:ole:_invoke returns 00000000 000b:trace:ole:ITypeInfo_fnInvoke varresult: 0x7fca106c->{VT_BSTR|VT_BYREF,0x7e8b7d48} 000b:trace:ole:ITypeInfo_fnReleaseFuncDesc (0x7f3ce0b0)->(0x7f3ce1e0) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 490 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3ce0b0)->ref is 242 000b:trace:ole:ITypeInfo_fnGetIDsOfNames (0x7f3ce0b0) Name L"Value" cNames 1 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning pIndex=105 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 491 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning ppTLib=0x7ff8fc40 000b:trace:ole:ITypeLib2_fnGetTypeInfo (0x7ff8fc40)->(index=104) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 492 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3cdc98)->ref is 2 000b:trace:ole:ITypeLib2_fnGetTypeInfo -- found (0x7f3cdc98) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(492) 000b:trace:ole:ITypeInfo_fnGetRefTypeInfo (0x7f3ce0b0) hreftype 0x28a0 loaded SUCCESS (0x7f3cdc98) 000b:trace:ole:ITypeInfo_fnGetIDsOfNames (0x7f3cdc98) Name L"Value" cNames 1 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning pIndex=104 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 492 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning ppTLib=0x7ff8fc40 000b:trace:ole:ITypeLib2_fnGetTypeInfo (0x7ff8fc40)->(index=103) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 493 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3cd400)->ref is 2 000b:trace:ole:ITypeLib2_fnGetTypeInfo -- found (0x7f3cd400) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(493) 000b:trace:ole:ITypeInfo_fnGetRefTypeInfo (0x7f3cdc98) hreftype 0x283c loaded SUCCESS (0x7f3cd400) 000b:trace:ole:ITypeInfo_fnGetIDsOfNames (0x7f3cd400) Name L"Value" cNames 1 000b:trace:ole:ITypeInfo_fnRelease (0x7f3cd400)->(1) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(492) 000b:trace:ole:ITypeInfo_fnRelease (0x7f3cdc98)->(1) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(491) 000b:trace:ole:ITypeInfo_fnInvoke (0x7f3ce0b0)(0x7f4fa378,id=0,flags=0x00000004,0x7fca11f8,(nil),0x7fca1144,0x7fca1188) partial stub! 000b:trace:ole:dump_DispParms args=2 named args=1 000b:trace:ole:dump_Variant 0x7e9ae0b8->{VT_BSTR|VT_BYREF,0x7e9ae100} 000b:trace:ole:dump_Variant 0x7e9ae0c8->{VT_BSTR|VT_BYREF,0x7e9af0d0} 000b:trace:ole:ITypeInfo2_fnGetFuncIndexOfMemId (0x7f3ce0b0) memid 0x00000000 invKind 0x0004 -> FAILED 000b:trace:ole:ITypeInfo2_fnGetVarIndexOfMemId (0x7f3ce0b0) memid 0x00000000 -> FAILED 000b:trace:ole:ITypeInfo2_fnGetTypeKind (0x7f3ce0b0) type 0x4 000b:trace:ole:ITypeInfo_fnGetRefTypeOfImplType (0x7f3ce0b0) index 0 000b:trace:ole:dump_TypeInfo 0x7f3ce0b0 ref=242 000b:trace:ole:dump_TypeInfo attr:{5331f72d-17f1-4d16-a17a-f190461343bf} 000b:trace:ole:dump_TypeInfo kind:TKIND_DISPATCH 000b:trace:ole:dump_TypeInfo fct:4 var:0 impl:1 000b:trace:ole:dump_TypeInfo parent tlb:0x7ff8fc40 index in TLB:105 000b:trace:ole:dump_TypeInfo L"ISetupTextSubstitution3" (null) 000b:trace:ole:ITypeInfo_fnGetRefTypeOfImplType -- 0x000028a0 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning pIndex=105 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 491 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning ppTLib=0x7ff8fc40 000b:trace:ole:ITypeLib2_fnGetTypeInfo (0x7ff8fc40)->(index=104) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 492 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3cdc98)->ref is 2 000b:trace:ole:ITypeLib2_fnGetTypeInfo -- found (0x7f3cdc98) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(492) 000b:trace:ole:ITypeInfo_fnGetRefTypeInfo (0x7f3ce0b0) hreftype 0x28a0 loaded SUCCESS (0x7f3cdc98) 000b:trace:ole:ITypeInfo_fnInvoke (0x7f3cdc98)(0x7f4fa378,id=0,flags=0x00000004,0x7fca11f8,(nil),0x7fca1144,0x7fca1188) partial stub! 000b:trace:ole:dump_DispParms args=2 named args=1 000b:trace:ole:dump_Variant 0x7e9ae0b8->{VT_BSTR|VT_BYREF,0x7e9ae100} 000b:trace:ole:dump_Variant 0x7e9ae0c8->{VT_BSTR|VT_BYREF,0x7e9af0d0} 000b:trace:ole:ITypeInfo2_fnGetFuncIndexOfMemId (0x7f3cdc98) memid 0x00000000 invKind 0x0004 -> FAILED 000b:trace:ole:ITypeInfo2_fnGetVarIndexOfMemId (0x7f3cdc98) memid 0x00000000 -> FAILED 000b:trace:ole:ITypeInfo2_fnGetTypeKind (0x7f3cdc98) type 0x4 000b:trace:ole:ITypeInfo_fnGetRefTypeOfImplType (0x7f3cdc98) index 0 000b:trace:ole:dump_TypeInfo 0x7f3cdc98 ref=2 000b:trace:ole:dump_TypeInfo attr:{1169a235-14d9-4488-8b56-58ece9c57002} 000b:trace:ole:dump_TypeInfo kind:TKIND_DISPATCH 000b:trace:ole:dump_TypeInfo fct:2 var:0 impl:1 000b:trace:ole:dump_TypeInfo parent tlb:0x7ff8fc40 index in TLB:104 000b:trace:ole:dump_TypeInfo L"ISetupTextSubstitution2" (null) 000b:trace:ole:ITypeInfo_fnGetRefTypeOfImplType -- 0x0000283c 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning pIndex=104 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 492 000b:trace:ole:ITypeInfo_fnGetContainingTypeLib returning ppTLib=0x7ff8fc40 000b:trace:ole:ITypeLib2_fnGetTypeInfo (0x7ff8fc40)->(index=103) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 493 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3cd400)->ref is 2 000b:trace:ole:ITypeLib2_fnGetTypeInfo -- found (0x7f3cd400) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(493) 000b:trace:ole:ITypeInfo_fnGetRefTypeInfo (0x7f3cdc98) hreftype 0x283c loaded SUCCESS (0x7f3cd400) 000b:trace:ole:ITypeInfo_fnInvoke (0x7f3cd400)(0x7f4fa378,id=0,flags=0x00000004,0x7fca11f8,(nil),0x7fca1144,0x7fca1188) partial stub! 000b:trace:ole:dump_DispParms args=2 named args=1 000b:trace:ole:dump_Variant 0x7e9ae0b8->{VT_BSTR|VT_BYREF,0x7e9ae100} 000b:trace:ole:dump_Variant 0x7e9ae0c8->{VT_BSTR|VT_BYREF,0x7e9af0d0} 000b:trace:ole:ITypeInfo2_fnGetFuncIndexOfMemId (0x7f3cd400) memid 0x00000000 invKind 0x0004 -> SUCCESS 000b:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3cd400) index 1 000b:trace:ole:ITypeInfo_fnInvoke invoking: memid is 00000000 Param 0: tdesc.vartype 8 (VT_BSTR) u.parmadesc.flags 1 u.parmadesc.lpex (nil) Param 1: tdesc.vartype 8 (VT_BSTR) u.parmadesc.flags 1 u.parmadesc.lpex (nil) funckind: 1 (pure virtual) invkind: 4 (property put) callconv: 4 (stdcall) oVft: 32 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.parmadesc.flags 0 u.parmadesc.lpex (nil) 000b:trace:ole:_invoke Calling 0x37a93f6d(7f4fa378,7e8c06b4,7e8c060c,) 000b:trace:ole:_invoke returns 00000000 000b:trace:ole:ITypeInfo_fnReleaseFuncDesc (0x7f3cd400)->(0x7f3cd650) 000b:trace:ole:ITypeInfo_fnRelease (0x7f3cd400)->(1) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(492) 000b:trace:ole:ITypeInfo_fnRelease (0x7f3cdc98)->(1) 000b:trace:ole:ITypeLib2_fnRelease (0x7ff8fc40)->(491) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 491 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3ce0b0)->ref is 243 000b:trace:ole:ITypeInfo_fnInvoke (0x7f3ce0b0)(0x7f4fa378,id=25,flags=0x00000003,0x7fca120c,0x7fca126c,0x7fca118c,0x7fca11d0) partial stub! 000b:trace:ole:dump_DispParms args=2 named args=0 000b:trace:ole:dump_Variant 0x7e9ae0a0->{VT_I4|VT_BYREF,0x7e9ae0cc} 000b:trace:ole:dump_Variant 0x7e9ae0b0->{VT_BSTR|VT_BYREF,0x7e9ae118} 000b:trace:ole:ITypeInfo2_fnGetFuncIndexOfMemId (0x7f3ce0b0) memid 0x00000019 invKind 0x0003 -> SUCCESS 000b:trace:ole:ITypeInfo_fnGetFuncDesc (0x7f3ce0b0) index 0 000b:trace:ole:ITypeInfo_fnInvoke invoking: memid is 00000019 Param 0: tdesc.vartype 8 (VT_BSTR) u.parmadesc.flags 1 u.parmadesc.lpex (nil) Param 1: tdesc.vartype 11 (VT_BOOL) u.parmadesc.flags 1 u.parmadesc.lpex (nil) Param 2: tdesc.vartype 26 (ptr to VT_BSTR) u.parmadesc.flags a u.parmadesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 56 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.parmadesc.flags 0 u.parmadesc.lpex (nil) 000b:fixme:ole:_copy_arg Should not use VariantChangeType here. (conversion from 0x4003 -> 0xb) 0000ffff 000b:trace:ole:_invoke Calling 0x37a93b3c(7f4fa378,7ff58b6c,0000ffff,7e8c06b0,) 000b:trace:ole:_invoke returns 00000000 000b:trace:ole:ITypeInfo_fnInvoke varresult: 0x7fca10d0->{VT_BSTR|VT_BYREF,0x7e8c06b0} 000b:trace:ole:ITypeInfo_fnReleaseFuncDesc (0x7f3ce0b0)->(0x7f3ce1e0) 000b:trace:ole:ITypeLib2_fnAddRef (0x7ff8fc40)->ref was 492 000b:trace:ole:ITypeInfo_fnAddRef (0x7f3ce0b0)->ref is 244
On Sun, Sep 04, 2005 at 02:17:06AM -0500, Robert Shearman wrote:
Ivan Gyurdiev wrote:
Hi,
I've been trying to get GTA: San Andreas, and Battlefield 2 running on Linux, so far without success.
I suspect they are running into the same bug, because they produce very similar output (ole fixmes). Both games will freeze at some point during the install.
Strangely, I don't see any errors, but I have provided an ole trace for each. Do you have any suggestions as to what the problem might be, or how to track it down?
Thanks for reporting this. In order for the logs of these types of programs to make sense, you really need to give me one with +ole,+olerelay,+seh,+tid options. I suspect it is the following bug though:
In newer InstallShields, there is a marshaled object that contains a function with a VT_PTR -> VT_USERDEFINED( TKIND_ENUM ). This should be treated as "int *", but is actually treated as "int". This is due to some broken logic in the typelib marshaler that is designed to fix the problem with VT_PTR -> VT_USERDEFINED( TKIND_INTERFACE ) -> "IUnknown *", but where we should dereference the pointer any more. We probably need to use the logic in ITypeInfo::Invoke to appropriately transform the soup of pointers and userdefined types into something we can use. I should also need to check what things are accepted in the native version. i.e. is VT_PTR -> VT_PTR -> VT_USERDEFINED( TKIND_ENUM ) supported? If so, that isn't representable by the VARIANT vt's, so we would need to treat it differently than the ITypeInfo::Invoke case.
Do you have a freely downloadable installer that exposes this?
Ciao, Marcus
Marcus Meissner wrote:
On Sun, Sep 04, 2005 at 02:17:06AM -0500, Robert Shearman wrote:
In newer InstallShields, there is a marshaled object that contains a function with a VT_PTR -> VT_USERDEFINED( TKIND_ENUM ). This should be treated as "int *", but is actually treated as "int". This is due to some broken logic in the typelib marshaler that is designed to fix the problem with VT_PTR -> VT_USERDEFINED( TKIND_INTERFACE ) -> "IUnknown *", but where we should dereference the pointer any more. We probably need to use the logic in ITypeInfo::Invoke to appropriately transform the soup of pointers and userdefined types into something we can use. I should also need to check what things are accepted in the native version. i.e. is VT_PTR -> VT_PTR -> VT_USERDEFINED( TKIND_ENUM ) supported? If so, that isn't representable by the VARIANT vt's, so we would need to treat it differently than the ITypeInfo::Invoke case.
Do you have a freely downloadable installer that exposes this?
No, but I have a test program.