http://bugs.winehq.org/show_bug.cgi?id=31618
Bug #: 31618 Summary: Unable to run an old VB5 app Product: Wine Version: unspecified Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ole32 AssignedTo: wine-bugs@winehq.org ReportedBy: rhon@free.fr Classification: Unclassified
Created attachment 41577 --> http://bugs.winehq.org/attachment.cgi?id=41577 First error message I had
I'm using wine 1.5.11 on Archlinux, and I try to launch this old game :
http://www.cnetfrance.fr/telecharger/waterboy-11006056s.htm?download=1
The problem is that I always get a "Run-time error '13' : Type mismatch" when I try to launch it.
I've tried to switch oleaut.dll and ole32.dll to "native" (I used dll copied from an up to date Win XP install), and switch to "Windows 98" mode using winecfg, and then I had the error1 attached.
I've installed vb5runtime, vb6run, mfc40 and mfc42 using winetricks, but it didn't help, I now have a window popup with message "System error &H80070078" and console output shows the messages in error2 attached file.
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #1 from rhon@free.fr 2012-09-05 15:31:23 CDT --- Created attachment 41578 --> http://bugs.winehq.org/attachment.cgi?id=41578 Last error messages
http://bugs.winehq.org/show_bug.cgi?id=31618
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL| |http://www.cnetfrance.fr/te | |lecharger/waterboy-11006056 | |s.htm?download=1 Version|unspecified |1.5.12 Ever Confirmed|0 |1
--- Comment #2 from Austin English austinenglish@gmail.com 2012-09-05 18:09:09 CDT --- Native oleaut32/ole32 shouldn't be used.
I can confirm this. After winetricks vb5run: austin@debian:~/w$ wine WaterBoy.exe fixme:olepicture:OLEPictureImpl_SaveAsFile (0x135e40)->(0x2018b0, 0, (nil)), hacked stub. fixme:olepicture:OLEPictureImpl_FindConnectionPoint no connection point for {33ad4f92-6699-11cf-b70c-00aa0060d393}
(the second repeats 10 times)
austin@debian:~$ sha1sum WaterBoyFR.zip b6357dc9fcbd735c3e0cc5d1a7100d047db232a6 WaterBoyFR.zip austin@debian:~$ du -h WaterBoyFR.zip 1.1M WaterBoyFR.zip austin@debian:~$ wine --version wine-1.5.12-95-gd97d342
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #3 from Bruno Jesus 00cpxxx@gmail.com 2013-11-15 05:30:18 CST --- Still in wine 1.7.6.
http://bugs.winehq.org/show_bug.cgi?id=31618
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|Unable to run an old VB5 |Waterboy 1.0 (VB5 game) |app |fails on startup, claiming | |"Run-time error '13': Type | |mismatch" | |(VarParseNumFromStr with | |invalid number string)
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
Relevant part of trace log:
--- snip --- $ WINEDEBUG=+tid,+seh,+relay,+ole,+variant,+snoop wine ./WaterBoy.exe >>log.txt 2>&1 ... 0024:CALL MSVBVM50.__vbaVarInt(<unknown, check return>) ret=0043d9d9 0024:Call oleaut32.VariantChangeTypeEx(0033f8c4,0033f8d4,00000400,00000000,00000005) ret=0f105a71 0024:trace:variant:VariantChangeTypeEx (0x33f8c4->(VT_EMPTY),0x33f8d4->(VT_BSTR),0x00000400,0x0000,VT_R8) 0024:trace:variant:VariantClear (0x33f428->(VT_EMPTY)) 0024:trace:variant:VariantClear (0x33f418->(VT_EMPTY)) 0024:trace:variant:VariantCopyInd (0x33f418->(VT_EMPTY),0x33f8d4->(VT_BSTR)) 0024:trace:variant:VariantCopy (0x33f418->(VT_EMPTY),0x33f8d4->(VT_BSTR)) 0024:trace:variant:VariantClear (0x33f418->(VT_EMPTY)) 0024:Call ntdll.RtlAllocateHeap(00110000,00000000,00000010) ret=7e7a00ef 0024:Ret ntdll.RtlAllocateHeap() retval=00b70f38 ret=7e7a00ef 0024:trace:variant:VARIANT_Coerce (0x33f428->(VT_EMPTY),0x00000400,0x0000,0x33f418->(VT_BSTR),VT_R8) 0024:trace:variant:VarParseNumFromStr (L" 10 6",1024,0x00000000,0x33f2c0,0x33eec0) 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000051,0033e9a4,00000002) ret=7e7f1d85 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f1d85 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cNegativeSymbol=45 '-' 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000050,0033e9a4,00000002) ret=7e7f1e8c 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000001 ret=7e7f1e8c 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cPositiveSymbol=43 '+' 0024:Call KERNEL32.GetLocaleInfoW(00000400,0000000e,0033e9a4,00000002) ret=7e7f1f96 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f1f96 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cDecimalPoint=46 '.' 0024:Call KERNEL32.GetLocaleInfoW(00000400,0000000f,0033e9a4,00000002) ret=7e7f20a0 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f20a0 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cDigitSeparator=44 ',' 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000016,0033e9a4,00000002) ret=7e7f21aa 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f21aa 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cCurrencyDecimalPoint=46 '.' 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000017,0033e9a4,00000002) ret=7e7f22b4 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f22b4 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cCurrencyDigitSeparator=44 ',' 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000014,0033e9a4,00000004) ret=7e7f23be 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7f23be 0024:trace:variant:VARIANT_GetLocalisedNumberChars lcid 0x400, cCurrencyLocal =36,0 '$',' ' 0024:trace:variant:VariantClear (0x33f428->(VT_EMPTY)) 0024:trace:variant:VariantClear (0x33f418->(VT_BSTR)) 0024:trace:variant:VariantChangeTypeEx returning 0x80020005, 0x33f8c4->(VT_EMPTY) 0024:Ret oleaut32.VariantChangeTypeEx() retval=80020005 ret=0f105a71 0024:Call oleaut32.SysFreeString(00000000) ret=0f047134 0024:Ret oleaut32.SysFreeString() retval=0033f470 ret=0f047134 0024:Call oleaut32.SysFreeString(00000000) ret=0f047139 0024:Ret oleaut32.SysFreeString() retval=0033f470 ret=0f047139 0024:Call oleaut32.SysFreeString(00000000) ret=0f04713e 0024:Ret oleaut32.SysFreeString() retval=0033f470 ret=0f04713e 0024:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0033f4a4) ret=0f0476f9 0024:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b83a89f ip=7b83a89f tid=0024 0024:trace:seh:raise_exception info[0]=deadcafe 0024:trace:seh:raise_exception info[1]=deadcafe 0024:trace:seh:raise_exception eax=7b826921 ebx=7b8ba000 ecx=deadcafe edx=0033f40c esi=0033f4a4 edi=0033f470 0024:trace:seh:raise_exception ebp=0033f448 esp=0033f3e4 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000287 0024:trace:seh:call_stack_handlers calling handler at 0x4017f6 code=c000008f flags=1 0024:CALL MSVBVM50.__vbaExceptHandler(<unknown, check return>) ret=7bc864f1 ... 0024:Call winex11.drv.SetWindowText(00010184,00b62e08 L"Run-time error '13':\n\nType mismatch") ret=7ec9f739 --- snip ---
Debugger session:
--- snip --- Wine-dbg>bt Backtrace: =>0 0x7e80b501 VarParseNumFromStr(lpszStr=" 10 6", lcid=0x400, dwFlags=0, pNumprs=0x33f310, rgbDig="Φê'│ (∩3") [/home/focht/projects/wine/wine-git/dlls/oleaut32/variant.c:1622] in oleaut32 (0x0033f348) 1 0x7e81b81b VarR8FromStr+0x30(strIn=" 10 6", lcid=0x400, dwFlags=0, pDblOut=0x33f480) [/home/focht/projects/wine/wine-git/dlls/oleaut32/vartype.c:3154] in oleaut32 (0x0033f378) 2 0x7e806e69 VARIANT_Coerce+0x1e1c(pd=0x33f478, lcid=0x400, wFlags=0, ps=0x33f468, vt=0x5) [/home/focht/projects/wine/wine-git/dlls/oleaut32/variant.c:365] in oleaut32 (0x0033f408) 3 0x7e8093f4 VariantChangeTypeEx+0x347(pvargDest=<couldn't compute location>, pvargSrc=<couldn't compute location>, lcid=<couldn't compute location>, wFlags=0, vt=0x5) [/home/focht/projects/wine/wine-git/dlls/oleaut32/variant.c:1047] in oleaut32 (0x0033f4b8) 4 0x0f105a71 in msvbvm50 (+0x105a70) (0x0033f4fc) 5 0x0043d9d9 in waterboy (+0x3d9d8) (0x0033f968) 6 0x0f038913 in msvbvm50 (+0x38912) (0x0033f974) 7 0x0042947f in waterboy (+0x2947e) (0x0033f984) 8 0x0f0388ed in msvbvm50 (+0x388ec) (0x0033f9a0) 9 0x0f038811 in msvbvm50 (+0x38810) (0x0033f9d8)
...
1965 if (pNumprs->dwInFlags & NUMPRS_USE_ALL && *lpszStr != '\0') Wine-dbg> 1966 return DISP_E_TYPEMISMATCH; /* Not all chars were consumed */ Wine-dbg> --- snip ---
It all boils down to that strange 'VarParseNumFromStr(" 10 6")' call. I debugged that garbage and this string gets really passed through VB runtime.
MSDN: http://msdn.microsoft.com/en-us/library/aa913152.aspx
I think Wine does the right thing in this case by returning DISP_E_TYPEMISMATCH which ultimately leads to that runtime error.
I'm curious ... did anyone really verify this game works on modern Windows (no Win9X garbage)?
$ sha1sum WaterBoyFR.zip b6357dc9fcbd735c3e0cc5d1a7100d047db232a6 WaterBoyFR.zip
$ du -sh WaterBoyFR.zip 1.1M WaterBoyFR.zip
$ wine --version wine-1.7.9-250-g201ae48
Regards
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #5 from Bruno Jesus 00cpxxx@gmail.com --- The game instantly fails in win XP with error 13, type mismatch. Time to platform dependent code?
It does not work with xp "compatibility mode" to win95 either.
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #6 from Anastasius Focht focht@gmx.net --- Hello Bruno,
--- quote --- The game instantly fails in win XP with error 13, type mismatch. Time to platform dependent code? --- quote ---
Thanks for testing.
--- quote --- It does not work with xp "compatibility mode" to win95 either. --- quote ---
For "compatibility mode" to be effective the application/game must be listed in the application shim database (= problem officially recognized by Microsoft) so one or multiple shims "hacks" can be applied at runtime.
This game probably never gained any significant popularity hence the breakage on modern Windows OS was never brought to Microsoft's attention.
This code probably only works by pure luck on older systems, relying on broken/undocumented API behaviour (the executable is dated 2000).
I could probably dig deeper here and patch the application itself (it's native code, no VB PCode), but personally I think that would be a waste of time.
IMHO 'invalid' or 'wontfix'.
Regards
http://bugs.winehq.org/show_bug.cgi?id=31618
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID
--- Comment #7 from Bruno Jesus 00cpxxx@gmail.com --- No need to dig deeper, the bug is invalid since it was opened.
I just tested it in Windows 95 and 98, result: does not work. Same type mismatch error.
I looked for other versions of the game but all sites distribute the same file. My guess is that it worked inside VB5 (debug) and the author didn't care to test after compiling.
http://bugs.winehq.org/show_bug.cgi?id=31618
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Bruno Jesus 00cpxxx@gmail.com --- Closing.
http://bugs.winehq.org/show_bug.cgi?id=31618
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CLOSED |REOPENED CC| |00cpxxx@gmail.com Resolution|INVALID |---
--- Comment #9 from Bruno Jesus 00cpxxx@gmail.com --- I dreamt with this bug today... There I received a crucial hint "try with french locale".
And yes, the game works in any windows version with french locale.
http://bugs.winehq.org/show_bug.cgi?id=31618
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|ole32 |oleaut32
--- Comment #10 from Nikolay Sivov bunglehead@gmail.com --- Setting this to oleaut32 where it belongs. Bruno, did you test if this call works in French locale? Or does this string never occur when running on French locale?
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #11 from Bruno Jesus 00cpxxx@gmail.com --- Created attachment 47486 --> http://bugs.winehq.org/attachment.cgi?id=47486 VBS to test, winetricks wsh56 and then "wine wscript test.vbs"
The attached test will result in error in English and Portuguese locales (800A000D) but it will work in French (France) locale. These tests were done in Windows XP.
I'm looking for a way to test this in wine, doing a LANG='fr' wine wscript test.vbs does not work (error 800A000D), but I don't know if the locale didn't work or was ignored by wine.
http://bugs.winehq.org/show_bug.cgi?id=31618
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #47486|application/x-wine-extensio |text/plain mime type|n-vbs |
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #12 from Nikolay Sivov bunglehead@gmail.com --- I think it should be something like LANG="fr_FR.UTF-8".
http://bugs.winehq.org/show_bug.cgi?id=31618
--- Comment #13 from Bruno Jesus 00cpxxx@gmail.com --- (In reply to Nikolay Sivov from comment #12)
I think it should be something like LANG="fr_FR.UTF-8".
Does not work, the error happens every time.
https://bugs.winehq.org/show_bug.cgi?id=31618
zaplo00@mailfence.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |zaplo00@mailfence.com
--- Comment #14 from zaplo00@mailfence.com --- This needs european locale (fr_FR or such) and also vb5runtime. Without it even fr_FR show error.
wine-staging 2.14
https://bugs.winehq.org/show_bug.cgi?id=31618
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |fgouget@codeweavers.com CC| |fgouget@codeweavers.com
--- Comment #15 from François Gouget fgouget@codeweavers.com --- * In French the thousands separator is a non-breaking space. * When sThousand is a non-breaking space, regular spaces are also treated as thousands separators. * Furthermore VarParseNumFromStr() does not require thousands separators to follow a neat three digits pattern. So in English "1,000" is handled the same as "100,0" or even ",10,,00", etc. See where this is going?
In French, when parsed with NUMPRS_THOUSANDS, " 10 6" is identical to "106". (and in English ",10,6" == "106") I will send a patch shortly.
https://bugs.winehq.org/show_bug.cgi?id=31618
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.cnetfrance.fr/te |https://web.archive.org/web |lecharger/waterboy-11006056 |/20010613131613/http://www. |s.htm?download=1 |anshare.com:80/files/waterb | |oyfr.zip Status|REOPENED |NEW
--- Comment #16 from Anastasius Focht focht@gmx.net --- Hello folks,
I've found an archived copy of the game via:
http://ace.rodez.perso.infonie.fr/Present.html (page bottom link)
https://web.archive.org/web/20010613131613/http://www.anshare.com:80/files/w...
$ sha1sum waterboyfr.zip b6357dc9fcbd735c3e0cc5d1a7100d047db232a6 waterboyfr.zip
$ du -sh waterboyfr.zip 1.1M waterboyfr.zip
Regards