http://bugs.winehq.org/show_bug.cgi?id=28605
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|oleaut32 |-unknown Summary|BurnPlot fails to start |BurnPlot (VB6 app) fails to | |start (needs wshom.ocx | |WshShell3_GetIDsOfNames | |implementation)
--- Comment #2 from Anastasius Focht focht@gmx.net 2011-12-20 09:36:48 CST --- Hello,
confirming, it seems "WshShell3_GetIDsOfNames" stub is the culprit here.
That WSH stuff is late bound in VB6 app. The app/VB6 runtime needs GetIDsOfNames() to find the dispid that represents the function. Once the ID is known, invoke can be called.
Prerequisite:
clean WINEPREFIX 'winetricks -q vbrun60'
WINEDEBUG=+tid,+seh,+relay,+snoop,+variant,+ole
--- snip --- 0024:CALL MSVBVM60.rtcCreateObject2(<unknown, check return>) ret=00413907 0024:Call ole32.CLSIDFromProgID(00407040 L"WScript.Shell",0032f800) ret=660d965e ... 0024:Call KERNEL32.LoadLibraryExW(0032f3c2 L"C:\windows\system32\wshom.ocx",00000000,00000008) ret=6839ce76 ... 0024:Ret KERNEL32.LoadLibraryExW() retval=51a90000 ret=6839ce76 ... 0024:trace:ole:apartment_getclassobject added new loaded dll L"C:\windows\system32\wshom.ocx" 0024:trace:ole:apartment_getclassobject calling DllGetClassObject 0x51aa063c 0024:Call wshom.ocx.DllGetClassObject(0032f800,6847e42c,0032f6bc) ret=6839ec12 0024:Ret wshom.ocx.DllGetClassObject() retval=00000000 ret=6839ec12 ... 0024:Ret ole32.CoCreateInstance() retval=00000000 ret=660d9684 ... 0024:fixme:wshom:WshShell3_QueryInterface Unknown iface {7fd52380-4e07-101b-ae2d-08002b2ec713} 0024:fixme:wshom:WshShell3_QueryInterface Unknown iface {37d84f60-42cb-11ce-8135-00aa004bb851} 0024:RET MSVBVM60.rtcCreateObject2(0032f870,00407040,00000000) retval=0032f870 ret=00413907 0024:CALL MSVBVM60.__vbaObjVar(<unknown, check return>) ret=00413911 0024:RET MSVBVM60.__vbaObjVar(0032f870) retval=51aa6a04 ret=00413911 0024:CALL MSVBVM60.__vbaObjSetAddref(0032f884,51aa6a04) ret=0041391e 0024:RET MSVBVM60.__vbaObjSetAddref() retval=51aa6a04 ret=0041391e 0024:CALL MSVBVM60.__vbaFreeVar() ret=00413929 0024:RET MSVBVM60.__vbaFreeVar() retval=00000002 ret=00413929 0024:CALL MSVBVM60.__vbaObjIs(<unknown, check return>) ret=00413934 0024:RET MSVBVM60.__vbaObjIs(51aa6a04,00000000) retval=00000000 ret=00413934 0024:CALL MSVBVM60.__vbaLateMemCallLd(0032f870,51aa6a04,00407070,00000001,00000008,0032f868,00407060,00020020) ret=0041396e 0024:fixme:wshom:WshShell3_GetIDsOfNames ({00000000-0000-0000-0000-000000000000} 0x32f80c 1 1033 0x32f810) ... 0024:Call KERNEL32.MultiByteToWideChar(00000000,00000000,00404b0c "DVDGraph",ffffffff,0014c48c,00000009) ret=660da0db 0024:Ret KERNEL32.MultiByteToWideChar() retval=00000009 ret=660da0db 0024:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0032f788) ret=660d0956 0024:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b838b5b ip=7b838b5b tid=0024 0024:trace:seh:raise_exception info[0]=deadcafe 0024:trace:seh:raise_exception info[1]=deadcafe 0024:trace:seh:raise_exception eax=7b826171 ebx=7b8a97a8 ecx=deadcafe edx=0032f6a4 esi=0032f788 edi=0032f700 0024:trace:seh:raise_exception ebp=0032f6e8 esp=0032f684 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000203 0024:trace:seh:call_vectored_handlers calling handler at 0x68aece0e code=c000008f flags=1 0024:trace:seh:call_vectored_handlers handler at 0x68aece0e returned 0 0024:trace:seh:call_stack_handlers calling handler at 0x401576 code=c000008f flags=1 0024:CALL MSVBVM60.__vbaExceptHandler(<unknown, check return>) ret=7bc7ac85 0024:Call KERNEL32.IsBadReadPtr(00401528,00000004) ret=660e3cfd 0024:Ret KERNEL32.IsBadReadPtr() retval=00000000 ret=660e3cfd 0024:RET MSVBVM60.__vbaExceptHandler() retval=00000001 ret=7bc7ac85 ... --- snip ---
The other problem is most likely related to special folders collection (app tries to find "Desktop" object in returned IWshCollection). That belongs to a separate bug.
$ sha1sum BurnPlot.exe 2f7c60de78ccf59409a365396e1d17cde5cae2ae BurnPlot.exe
$ wine --version wine-1.3.35-43-gd9d4a06
Regards