https://bugs.winehq.org/show_bug.cgi?id=35445
Bug ID: 35445 Summary: CPCE v4.1 (Coral Point Count with Excel extensions, VB6 app) fails on startup (needs scrrun IFolder::get_Path) Product: Wine Version: 1.7.11 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: scrrun Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Classification: Unclassified
Hello folks,
reported in WineHQ forum.
Download: http://www.nova.edu/ocean/cpce (use throwaway for registration)
Direct link (needs auth): http://www.nova.edu/ocean/cpce/downloads/cpce41_setup_full.exe
--- snip --- $ pwd /home/focht/.wine/drive_c/CPCe_41_inst
$ WINEDEBUG=+tid,+seh,+relay,+scrrun,+ole,+variant,+snoop wine ./cpce_41.exe
log.txt 2>&1
... 0024:trace:ole:ITypeInfo_fnInvoke invoking: L"Path"(1) parm0: L"pbstrPath" memid is 00000000 Param 0: tdesc.vartype 26 (ptr to VT_BSTR) u.paramdesc.wParamFlags PARAMFLAG_FOUT PARAMFLAG_FRETVAL u.paramdesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 28 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.paramdesc.wParamFlags PARAMFLAGS_NONE u.paramdesc.lpex (nil) helpstring: (null) entry: invalid ... 0024:trace:ole:ITypeInfo_fnInvoke changing args 0024:trace:ole:DispCallFunc (0x171120, 28, 4, 10, 1, 0x1cfa9c, 0x1cfa98, 0x33ef90 (vt=10)) ... 0024:trace:ole:DispCallFunc arg 0: type 16392 0024:trace:ole:dump_Variant 0x1cfa78->{VT_BSTR|VT_BYREF,0x33ef80} 0024:fixme:scrrun:folder_get_Path (0x171120)->(0x33ef80): stub ... 0024:trace:ole:DispCallFunc retval: 0x33ef90->{VT_ERROR} 0024:trace:ole:ITypeInfo_fnInvoke [retval] value: 0x1cfa78->{VT_BSTR|VT_BYREF,0x33ef80} 0024:trace:variant:VariantInit (0x33f2f8) 0024:trace:variant:VariantCopyInd (0x33f2f8->(VT_EMPTY),0x1cfa78->(VT_BSTR|VT_BYREF)) 0024:trace:variant:VariantClear (0x33f2f8->(VT_EMPTY)) ... 0024:trace:variant:VariantCopyInd returning 0x00000000, 0x33f2f8->(VT_BSTR) 0024:trace:variant:VARIANT_ClearInd (0x1cfa78->(VT_BSTR|VT_BYREF)) 0024:trace:variant:VariantClear (0x1cfa88->(VT_EMPTY)) 0024:warn:ole:ITypeInfo_fnInvoke invoked function failed with error 0x80004001 ... 0024:trace:ole:ITypeInfo_fnInvoke -- 0x80020009 0024:trace:ole:ITypeInfo_fnRelease (0x1c65d8)->(4294967294) 0024:trace:variant:VariantClear (0x33f468->(VT_EMPTY)) 0024:trace:variant:VariantClear (0x33f458->(VT_DISPATCH)) 0024:trace:scrrun:folder_Release (0x171120)->(1) 0024:trace:variant:VariantChangeTypeEx returning 0x80020005, 0x33f508->(VT_EMPTY) 0024:trace:variant:VariantClear (0x33f508->(VT_EMPTY)) 0024:trace:variant:VariantClear (0x33f4f8->(VT_EMPTY)) ... 0024:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0033f530) ret=660d0956 0024:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b83a913 ip=7b83a913 tid=0024 0024:trace:seh:raise_exception info[0]=deadcafe 0024:trace:seh:raise_exception info[1]=deadcafe 0024:trace:seh:raise_exception eax=7b826989 ebx=7b8ba000 ecx=deadcafe edx=0033f484 esi=0033f530 edi=0033f4f0 0024:trace:seh:raise_exception ebp=0033f4c8 esp=0033f464 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 0024:trace:seh:call_stack_handlers calling handler at 0x408bb6 code=c000008f flags=1 ... 0024:Call winex11.drv.SetWindowText(000100c4,001d3fd0 L"Run-time error '13':\n\nType mismatch") ret=7ec9f739 --- snip ---
Source: http://source.winehq.org/git/wine.git/blob/fac0d13ee74979bcfe954ebab66f291ef...
--- snip --- 1228 static HRESULT WINAPI folder_get_Path(IFolder *iface, BSTR *path) 1229 { 1230 struct folder *This = impl_from_IFolder(iface); 1231 FIXME("(%p)->(%p): stub\n", This, path); 1232 return E_NOTIMPL; 1233 } --- snip ---
Workaround: 'winetricks -q wsh57'
$ sha1sum cpce41_setup_full.exe b7ac7d56a099909e27108cdc7ac7b264563fd16f cpce41_setup_full.exe
$ du -sh cpce41_setup_full.exe 21M cpce41_setup_full.exe
$ wine --version wine-1.7.11-159-gee33839
Regards
https://bugs.winehq.org/show_bug.cgi?id=35445
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |http://www.nova.edu/ocean/c | |pce
http://bugs.winehq.org/show_bug.cgi?id=35445
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- Okay, looking.
http://bugs.winehq.org/show_bug.cgi?id=35445
--- Comment #2 from Nikolay Sivov bunglehead@gmail.com --- Created attachment 47316 --> http://bugs.winehq.org/attachment.cgi?id=47316 patch
Please try it, just to see if it breaks on something else next.
http://bugs.winehq.org/show_bug.cgi?id=35445
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |wylda@volny.cz
http://bugs.winehq.org/show_bug.cgi?id=35445
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello Nikolay,
looks fine to me.
--- snip --- ... 0024:trace:scrrun:folder_Invoke (0x171038)->(0 {00000000-0000-0000-0000-000000000000} 0 2 0x7e8ced10 0x33f2f8 (nil) (nil)) 0024:trace:ole:ITypeInfo_fnInvoke (0x1c6d90)(0x171038,id=0,flags=0x00000002,0x7e8ced10,0x33f2f8,(nil),(nil)) 0024:trace:ole:dump_DispParms args=0 named args=0 0024:trace:ole:ITypeInfo_fnInvoke invoking: L"Path"(1) parm0: L"pbstrPath" memid is 00000000 Param 0: tdesc.vartype 26 (ptr to VT_BSTR) u.paramdesc.wParamFlags PARAMFLAG_FOUT PARAMFLAG_FRETVAL u.paramdesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 28 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.paramdesc.wParamFlags PARAMFLAGS_NONE u.paramdesc.lpex (nil) helpstring: (null) entry: invalid 0024:Call ntdll.RtlAllocateHeap(00110000,00000008,00000026) ret=7e7c1a73 0024:Ret ntdll.RtlAllocateHeap() retval=001d0230 ret=7e7c1a73 0024:trace:ole:ITypeInfo_fnInvoke changing args 0024:trace:ole:DispCallFunc (0x171038, 28, 4, 10, 1, 0x1d0254, 0x1d0250, 0x33ef90 (vt=10)) 0024:Call ntdll.RtlAllocateHeap(00110000,00000000,00000018) ret=7e7c1b08 0024:Ret ntdll.RtlAllocateHeap() retval=001d0260 ret=7e7c1b08 0024:trace:ole:DispCallFunc arg 0: type 16392 0024:trace:ole:dump_Variant 0x1d0230->{VT_BSTR|VT_BYREF,0x33ef80} 0024:trace:scrrun:folder_get_Path (0x171038)->(0x33ef80) 0024:Call oleaut32.SysAllocString(0017110c L"C:\CPCe_41_inst\codeimages") ret=7d6ca0ad ... 0024:trace:ole:ITypeInfo_fnInvoke -- 0x00000000 ... 0024:trace:scrrun:file_Invoke (0x1d01c0)->(1000 {00000000-0000-0000-0000-000000000000} 1033 3 0x33f558 0x33f7a8 0x33f538 0x33f568) 0024:trace:ole:ITypeInfo_fnInvoke (0x1c85e0)(0x1d01c0,id=1000,flags=0x00000003,0x33f558,0x33f7a8,0x33f538,0x33f568) 0024:trace:ole:dump_DispParms args=0 named args=0 0024:trace:ole:ITypeInfo_fnInvoke invoking: L"Name"(1) parm0: L"pbstrName" memid is 000003e8 Param 0: tdesc.vartype 26 (ptr to VT_BSTR) u.paramdesc.wParamFlags PARAMFLAG_FOUT PARAMFLAG_FRETVAL u.paramdesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 32 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.paramdesc.wParamFlags PARAMFLAGS_NONE u.paramdesc.lpex (nil) helpstring: (null) entry: invalid ... 0024:trace:scrrun:file_get_Name L"aa_cs.jpg" ... 0024:trace:ole:ITypeInfo_fnInvoke -- 0x00000000 ... 0024:RET MSVBVM60.__vbaVarLateMemCallLd() retval=0033f7a8 ret=0055180a 0024:CALL MSVBVM60.__vbaVarCat(0033f798,0033f7a8,0033f7b8) ret=0055181b 0024:Call oleaut32.VarCat(0033f7b8,0033f7a8,0033f798) ret=660e5ef8 0024:trace:variant:VarCat (0x33f7b8->(VT_BSTR),0x33f7a8->(VT_BSTR),0x33f798) 0024:trace:variant:VariantInit (0x33f508) 0024:trace:variant:VariantInit (0x33f4f8) 0024:trace:variant:VarBstrCat L"C:\CPCe_41_inst\codeimages\",L"aa_cs.jpg",0x33f7a0 0024:trace:variant:VarBstrCat L"C:\CPCe_41_inst\codeimages\aa_cs.jpg" 0024:trace:variant:VariantClear (0x33f508->(VT_EMPTY)) 0024:trace:variant:VariantClear (0x33f4f8->(VT_EMPTY)) 0024:Ret oleaut32.VarCat() retval=00000000 ret=660e5ef8 0024:RET MSVBVM60.__vbaVarCat() retval=0033f798 ret=0055181b 0024:CALL MSVBVM60.rtcTrimVar(0033f788,0033f798) ret=00551829 0024:Call oleaut32.SysAllocStringLen(001bbadc L"C:\CPCe_41_inst\codeimages\aa_cs.jpg",00000024) ret=660e6b96 ... --- snip ---
Next issue is IFileCollection iterator.
Dmitry already fixed IFolderCollection (patches recently went in).
--- snip --- 0024:trace:scrrun:filecoll_enumvariant_Next (0x1cd690)->(1 0x33f8a0 (nil)) 0024:Call KERNEL32.FindNextFileW(001cd640,0033f2dc) ret=7d6c81be 0024:Ret KERNEL32.FindNextFileW() retval=00000000 ret=7d6c81be ... 0024:trace:ole:SysAllocStringLen L"C:\CPCe_41_inst\codeimages\\f3d03\03e2" 0024:Ret oleaut32.SysAllocString() retval=001d01c4 ret=7d6c6735 .. 0024:Call KERNEL32.GetFullPathNameW(001d01c4 L"C:\CPCe_41_inst\codeimages\\f3d03\03e2",00000000,00000000,00000000) ret=7d6cc1a9 0024:Ret KERNEL32.GetFullPathNameW() retval=0000001f ret=7d6cc1a9 ... 0024:Call KERNEL32.GetFullPathNameW(001d01c4 L"C:\CPCe_41_inst\codeimages\\f3d03\03e2",0000001f,001d02c0,00000000) ret=7d6cc220 0024:Ret KERNEL32.GetFullPathNameW() retval=0000001e ret=7d6cc220 0024:Call KERNEL32.GetFileAttributesW(001d02c0 L"C:\CPCe_41_inst\codeimages\\f3d03\03e2") ret=7d6cc29f 0024:Ret KERNEL32.GetFileAttributesW() retval=ffffffff ret=7d6cc29f ... 0024:Call oleaut32.SysFreeString(001d01c4 L"C:\CPCe_41_inst\codeimages\\f3d03\03e2") ret=7d6c8221 0024:Ret oleaut32.SysFreeString() retval=00000000 ret=7d6c8221 0024:trace:scrrun:enumvariant_QueryInterface (0x1cd690)->({df0b3d60-548f-101b-8e65-08002b2bd119} 0x33f584) 0024:trace:scrrun:filecoll_enumvariant_Release (0x1cd690)->(0) 0024:trace:scrrun:filecoll_Release (0x1cd628)->(1) ... 0024:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0033f518) ret=660d0956 0024:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b83a97b ip=7b83a97b tid=0024 0024:trace:seh:raise_exception info[0]=deadcafe 0024:trace:seh:raise_exception info[1]=deadcafe 0024:trace:seh:raise_exception eax=7b8269e1 ebx=7b8bb000 ecx=deadcafe edx=0033f474 esi=0033f518 edi=0033f4e0 0024:trace:seh:raise_exception ebp=0033f4b8 esp=0033f454 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 0024:trace:seh:call_stack_handlers calling handler at 0x408bb6 code=c000008f flags=1 ... 0024:Call winex11.drv.SetWindowText(000100c4,001d5a58 L"Run-time error '53':\n\nFile not found") ret=7ec9f739 --- snip ---
Regards
https://bugs.winehq.org/show_bug.cgi?id=35445
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello Nikolay,
I saw your recent commits in master:
http://source.winehq.org/git/wine.git/commitdiff/a9a2c9b5391680ef55c01f8168b... ("scrrun: Fix Next() for file collection.")
http://source.winehq.org/git/wine.git/commitdiff/fac1c0d25b8852767dbbf53b9b5... ("scrrun: Fix Skip() for file collection.")
Unfortunately the app crashes now:
--- snip --- ... 0024:trace:scrrun:folder_get_Files (0x161430)->(0x33f190) 0024:trace:ole:SysAllocStringLen L"C:\CPCe_41_inst\codeimages" 0024:trace:ole:DispCallFunc retval: 0x33f1a0->{VT_ERROR} 0024:trace:ole:ITypeInfo_fnInvoke [retval] value: 0x1bd058->{VT_DISPATCH|VT_BYREF,0x33f190} 0024:trace:variant:VariantInit (0x33f7b8) 0024:trace:variant:VariantCopyInd (0x33f7b8->(VT_EMPTY),0x1bd058->(VT_DISPATCH|VT_BYREF)) 0024:trace:variant:VariantClear (0x33f7b8->(VT_EMPTY)) 0024:trace:scrrun:filecoll_AddRef (0x1bd140)->(2) 0024:trace:variant:VariantCopyInd returning 0x00000000, 0x33f7b8->(VT_DISPATCH) 0024:trace:variant:VARIANT_ClearInd (0x1bd058->(VT_DISPATCH|VT_BYREF)) 0024:trace:scrrun:filecoll_Release (0x1bd140)->(1) 0024:trace:variant:VariantClear (0x1bd068->(VT_EMPTY)) 0024:trace:ole:ITypeInfo_fnInvoke -- 0x00000000 0024:trace:ole:ITypeInfo_fnRelease (0x1b68a8)->(4294967295) 0024:trace:scrrun:filecoll_Invoke (0x1bd140)->(-4 {00000000-0000-0000-0000-000000000000} 1033 3 0x33f574 0x33f584 0x33f554 0x33f5a0) 0024:trace:ole:ITypeLib2_fnGetTypeInfoOfGuid 0x161080 {c7c3f5a5-88a3-11d0-abcb-00a0c90fffc0} 0x33f3e4 0024:trace:ole:ITypeInfo_fnAddRef (0x1b7e38)->ref is 1 0024:trace:ole:ITypeLib2_fnAddRef (0x161080) ref=2 0024:trace:ole:ITypeInfo_fnInvoke (0x1b7e38)(0x1bd140,id=-4,flags=0x00000003,0x33f574,0x33f584,0x33f554,0x33f5a0) 0024:trace:ole:dump_DispParms args=0 named args=0 0024:trace:ole:ITypeInfo_fnInvoke invoking: L"_NewEnum"(1) parm0: L"ppenum" memid is fffffffc Param 0: tdesc.vartype 26 (ptr to VT_UNKNOWN) u.paramdesc.wParamFlags PARAMFLAG_FOUT PARAMFLAG_FRETVAL u.paramdesc.lpex (nil) funckind: 1 (pure virtual) invkind: 2 (property get) callconv: 4 (stdcall) oVft: 32 cParamsOpt: 0 wFlags: 41 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.paramdesc.wParamFlags PARAMFLAGS_NONE u.paramdesc.lpex (nil) helpstring: (null) entry: invalid 0024:trace:ole:ITypeInfo_fnInvoke changing args 0024:trace:ole:DispCallFunc (0x1bd140, 32, 4, 10, 1, 0x1bd07c, 0x1bd078, 0x33f1c0 (vt=10)) 0024:trace:ole:DispCallFunc arg 0: type 16397 0024:trace:ole:dump_Variant 0x1bd058->{VT_UNKNOWN|VT_BYREF,0x33f1b0} 0024:trace:scrrun:filecoll_get__NewEnum (0x1bd140)->(0x33f1b0) 0024:trace:scrrun:filecoll_AddRef (0x1bd140)->(2) 0024:trace:ole:DispCallFunc retval: 0x33f1c0->{VT_ERROR} 0024:trace:ole:ITypeInfo_fnInvoke [retval] value: 0x1bd058->{VT_UNKNOWN|VT_BYREF,0x33f1b0} 0024:trace:variant:VariantInit (0x33f584) 0024:trace:variant:VariantCopyInd (0x33f584->(VT_EMPTY),0x1bd058->(VT_UNKNOWN|VT_BYREF)) 0024:trace:variant:VariantClear (0x33f584->(VT_EMPTY)) 0024:trace:scrrun:enumvariant_AddRef (0x1bd158)->(2) 0024:trace:variant:VariantCopyInd returning 0x00000000, 0x33f584->(VT_UNKNOWN) 0024:trace:variant:VARIANT_ClearInd (0x1bd058->(VT_UNKNOWN|VT_BYREF)) 0024:trace:scrrun:filecoll_enumvariant_Release (0x1bd158)->(1) 0024:trace:variant:VariantClear (0x1bd068->(VT_EMPTY)) 0024:trace:ole:ITypeInfo_fnInvoke -- 0x00000000 0024:trace:ole:ITypeInfo_fnRelease (0x1b7e38)->(0) 0024:trace:ole:ITypeLib2_fnRelease (0x161080) ref=1 0024:trace:scrrun:enumvariant_QueryInterface (0x1bd158)->({00020404-0000-0000-c000-000000000046} 0x33f6ac) 0024:trace:scrrun:enumvariant_AddRef (0x1bd158)->(2) 0024:trace:scrrun:filecoll_enumvariant_Release (0x1bd158)->(1) 0024:trace:scrrun:filecoll_enumvariant_Next (0x1bd158)->(1 0x33f8a0 (nil)) 0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7b841430 ip=7b841430 tid=0024 0024:trace:seh:raise_exception info[0]=00000000 0024:trace:seh:raise_exception info[1]=00000004 0024:trace:seh:raise_exception eax=00000004 ebx=7b8bb000 ecx=0033f2a0 edx=7bcecb88 esi=0033f2a0 edi=0033f8a0 0024:trace:seh:raise_exception ebp=0033f288 esp=0033f200 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010217 ... Unhandled exception: page fault on read access to 0x00000004 in 32-bit code (0x7b841430). ... Backtrace:
=>0 0x7b841430 FindNextFileW+0xa8(handle=<couldn't compute location>, data=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/kernel32/file.c:2058] in kernel32 (0x0033f288)
1 0x7d61920d filecoll_enumvariant_Next+0x11f(iface=<couldn't compute location>, celt=<couldn't compute location>, var=<couldn't compute location>, fetched=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/scrrun/filesystem.c:968] in scrrun (0x0033f548)
2 0x6610607e in msvbvm60 (+0x10607d) (0x0033f59c) 3 0x6610603f in msvbvm60 (+0x10603e) (0x0033f5c4) 4 0x0055177e in cpce_41 (+0x15177d) (0x0033f974) 5 0x66051fb3 in msvbvm60 (+0x51fb2) (0x0033f980) 6 0x00483cf3 in cpce_41 (+0x83cf2) (0x0033f990) 7 0x660522b4 in msvbvm60 (+0x522b3) (0x0033f9dc) 8 0x6605271b in msvbvm60 (+0x5271a) (0x0033fab0) 9 0x660528e7 in msvbvm60 (+0x528e6) (0x0033fad4) ... --- snip ---
There is a missing initialization of 'This->data.u.filecoll.find' hence the crash in filecoll_enumvariant_Next():
http://source.winehq.org/git/wine.git/blob/fac1c0d25b8852767dbbf53b9b5ce3997...
Missing init here: http://source.winehq.org/git/wine.git/blob/fac1c0d25b8852767dbbf53b9b5ce3997...
$ wine --version wine-1.7.14-23-g770213e
Regards
https://bugs.winehq.org/show_bug.cgi?id=35445
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com --- Oh, thanks. I'll send a fix for that tomorrow.
https://bugs.winehq.org/show_bug.cgi?id=35445
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |eebf9c6b827a9f1db9a8ae2b0da | |abd7de99ffe2a Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #6 from Anastasius Focht focht@gmx.net --- Hello folks,
this is now fixed by commit http://source.winehq.org/git/wine.git/commitdiff/eebf9c6b827a9f1db9a8ae2b0da...
The app starts fine.
Thanks Nikolay
Regards
https://bugs.winehq.org/show_bug.cgi?id=35445
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.15.