WineHQ
Bug Tracking Database – Bug 17214

 Bugzilla

 

Last modified: 2014-02-20 12:37:54 UTC  

Proteus VX fails to install (VT_DISPATCH to VT_xxx conversion: uninitialized VARIANTARG passed to DISPID_VALUE invoke call)

Bug 17214 - Proteus VX fails to install (VT_DISPATCH to VT_xxx conversion: uninitialized VARIANTARG passed to DISPID_VALUE invoke call)
Proteus VX fails to install (VT_DISPATCH to VT_xxx conversion: uninitialized ...
Status: CLOSED FIXED
AppDB: Show Apps affected by this bug
Product: Wine
Classification: Unclassified
Component: oleaut32
1.1.26
x86 Linux
: P2 normal
: ---
Assigned To: Mr. Bugs
http://www.creative.com/emu/files/Pro...
: download, Installer
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2009-01-31 20:25 UTC by Johnny
Modified: 2014-02-20 12:37 UTC (History)
2 users (show)

See Also:
Regression SHA1:
Fixed by SHA1: 8c2b4bfe4899faa7f8438767ccacb13855ff17f0
Distribution: ---
Staged patchset:


Attachments
wine-1.1.26-351-gd97cc15 console output (14.95 KB, text/plain)
2009-08-04 20:09 UTC, Ken Sharp
Details
wine 1.3.19 console output (14.65 KB, text/plain)
2011-05-11 07:44 UTC, Frédéric Delanoy
Details
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 1/4) (976.56 KB, application/octet-stream)
2011-05-11 07:45 UTC, Frédéric Delanoy
Details
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 2/4) (976.56 KB, application/octet-stream)
2011-05-11 07:46 UTC, Frédéric Delanoy
Details
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 3/4) (976.56 KB, application/octet-stream)
2011-05-11 07:46 UTC, Frédéric Delanoy
Details
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 4/4) (306.81 KB, application/octet-stream)
2011-05-11 07:47 UTC, Frédéric Delanoy
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Johnny 2009-01-31 20:25:58 UTC
Hi!

Proteus VX is a freeware synth from E-Mu. 

The installer exits with an error, but I managed to run it by installing it in a real windows machine and then moving the files into wine's directory.

However, the vst version hangs and the standalone version sometimes hangs too.

When it runs, I try to open the default bank that comes with it, and I get an error saying that not all the samples could be loaded. 

Some patches have no sound.

you can get proteusVX here:
http://www.emu.com/support/files/storage/ProteusVX.zip

Thanks!
Comment 1 Stefan Leichter 2009-02-02 15:35:17 UTC
looks like the issue with the installer is a timing problem. When i run wine with the logging +seh,+snoop,+relay the installer finishes. Because of my limited disk space i had to redirect the logging output to /dev/null
Comment 2 Ken Sharp 2009-08-04 20:08:42 UTC
Confirming, although nothing I tried got it to work.
Comment 3 Ken Sharp 2009-08-04 20:09:21 UTC
Created attachment 22818 [details]
wine-1.1.26-351-gd97cc15 console output
Comment 4 Frédéric Delanoy 2011-05-11 07:43:35 UTC
Wine 1.3.19, fails with 

Unhandled exception: error number 0x80020005
Setup will now terminate

popup message.
Comment 5 Frédéric Delanoy 2011-05-11 07:44:23 UTC
Created attachment 34628 [details]
wine 1.3.19 console output
Comment 6 Frédéric Delanoy 2011-05-11 07:45:41 UTC
Created attachment 34629 [details]
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 1/4)
Comment 7 Frédéric Delanoy 2011-05-11 07:46:18 UTC
Created attachment 34630 [details]
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 2/4)
Comment 8 Frédéric Delanoy 2011-05-11 07:46:58 UTC
Created attachment 34631 [details]
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 3/4)
Comment 9 Frédéric Delanoy 2011-05-11 07:47:19 UTC
Created attachment 34632 [details]
+ole,+relay,+seh,+tid trace; wine 1.3.19 (part 4/4)
Comment 10 Frédéric Delanoy 2012-02-11 09:13:50 UTC
Still in wine-1.4-rc2-118-g88ae2c1 (same as 1.3.19)
Comment 11 Frédéric Delanoy 2013-05-30 05:42:09 UTC
Still in wine-1.5.31-78-g11589fa
Comment 12 Anastasius Focht 2014-02-07 14:02:10 UTC
Hello folks,

confirming ... a nasty one.

It seems the InstallShield script engine copies the 'out' value during VarI4FromDisp() -> VARIANT_FromDisp() -> IDispatch_Invoke() using VariantCopy() without initializing it first.

Wine passes an uninitialized stack based VARIANTARG (param ought to be 'out').

I added additional 'FIXME' traces around the invoke call to make it more visible:

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+ole,+variant wine ./setup.exe >>log.txt 2>&1
...
0039:Call oleaut32.VariantChangeType(003313bc,003313e4,00000000,00000003) ret=010f1bde
0039:trace:variant:VariantChangeTypeEx (0x3313bc->(VT_EMPTY),0x3313e4->(VT_DISPATCH),0x00000400,0x0000,VT_I4)
0039:trace:variant:VariantClear (0x3312c8->(VT_EMPTY))
0039:trace:variant:VariantClear (0x3312b8->(VT_EMPTY))
0039:trace:variant:VariantCopyInd (0x3312b8->(VT_EMPTY),0x3313e4->(VT_DISPATCH))
0039:trace:variant:VariantCopy (0x3312b8->(VT_EMPTY),0x3313e4->(VT_DISPATCH))
0039:trace:variant:VariantClear (0x3312b8->(VT_EMPTY))
0039:trace:variant:VARIANT_Coerce (0x3312c8->(VT_EMPTY),0x00000400,0x0000,0x3312b8->(VT_DISPATCH),VT_I4)
0039:fixme:variant:VARIANT_FromDisp emptyParams=0x7e60bd10, srcVar=0x331148
0039:Call oleaut32.VariantInit(003310dc) ret=011097ff
0039:trace:variant:VariantInit (0x3310dc)
0039:Ret  oleaut32.VariantInit() retval=003310dc ret=011097ff
0039:Call oleaut32.VariantClear(003310dc) ret=010f15a9
0039:trace:variant:VariantClear (0x3310dc->(VT_EMPTY))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=010f15a9
0039:Call oleaut32.VariantCopy(00331148,003310dc) ret=011098a1
0039:trace:variant:VariantCopy (0x331148->(Invalid|VT_BYREF|VT_HARDTYPE),0x3310dc->(VT_I4))
0039:trace:variant:VariantClear (0x331148->(Invalid|VT_BYREF|VT_HARDTYPE))
0039:Ret  oleaut32.VariantCopy() retval=80020008 ret=011098a1
0039:Call oleaut32.VariantClear(003310dc) ret=011098ad
0039:trace:variant:VariantClear (0x3310dc->(VT_I4))
0039:Ret  oleaut32.VariantClear() retval=00000000 ret=011098ad
0039:fixme:variant:VARIANT_FromDisp hRet=0x80020008
0039:trace:variant:VariantClear (0x3312c8->(VT_EMPTY))
0039:trace:variant:VariantClear (0x3312b8->(VT_DISPATCH))
0039:trace:variant:VariantChangeTypeEx returning 0x80020005, 0x3313bc->(VT_EMPTY)
0039:Ret  oleaut32.VariantChangeType() retval=80020005 ret=010f1bde
0039:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,00331368) ret=0110fb96
0039:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83a97b ip=7b83a97b tid=0039
0039:trace:seh:raise_exception  info[0]=19930520
0039:trace:seh:raise_exception  info[1]=00331384
0039:trace:seh:raise_exception  info[2]=01124b38
0039:trace:seh:raise_exception  eax=7b8269e1 ebx=7b8bb000 ecx=19930520 edx=003312a4 esi=0033134c edi=00331310
0039:trace:seh:raise_exception  ebp=003312e8 esp=00331284 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00200283 
--- snip ---

Debugging/snooping lets the installer succeed (different stack values).

Debugger callstack to show the invocation:

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x094c972a in iscript (+0x1972a) (0x003311d8)

  1 0x7e53bcf5 VarI4FromDisp+0x31(pdispIn=0x97ca058, lcid=0x400, piOut=0x331310) [/home/focht/projects/wine/wine.repo/src/dlls/oleaut32/vartype.c:1635] in oleaut32 (0x00331208)

  2 0x7e527e51 VARIANT_Coerce+0xbac(pd=0x331308, lcid=0x400, wFlags=0, ps=0x3312f8, vt=0x3) [/home/focht/projects/wine/wine.repo/src/dlls/oleaut32/variant.c:210] in oleaut32 (0x00331298)

  3 0x7e52b64c VariantChangeTypeEx+0x347(pvargDest=<couldn't compute location>, pvargSrc=<couldn't compute location>, lcid=<couldn't compute location>, wFlags=0, vt=0x3) [/home/focht/projects/wine/wine.repo/src/dlls/oleaut32/variant.c:1047] in oleaut32 (0x00331348)

  4 0x7e52b2f5 VariantChangeType+0x55(pvargDest=<couldn't compute location>, pvargSrc=<couldn't compute location>, wFlags=0, vt=0x3) [/home/focht/projects/wine/wine.repo/src/dlls/oleaut32/variant.c:982] in oleaut32 (0x00331388)

  5 0x094b1bde in iscript (+0x1bdd) (0x003313d8)
  6 0x094b3eb8 in iscript (+0x3eb7) (0x00331400)
...
--- snip ---

Source: http://source.winehq.org/git/wine.git/blob/ca1a1d54c0d2bee13926a1edca789c09e0c35512:/dlls/oleaut32/vartype.c#l113

--- snip ---
113 /* Coerce VT_DISPATCH to another type */
114 static HRESULT VARIANT_FromDisp(IDispatch* pdispIn, LCID lcid, void* pOut,
115                                  VARTYPE vt, DWORD dwFlags)
116 {
117     static DISPPARAMS emptyParams = { NULL, NULL, 0, 0 };
118     VARIANTARG srcVar, dstVar;
119     HRESULT hRet;
120
121     if (!pdispIn)
122         return DISP_E_BADVARTYPE;
123
124     /* Get the default 'value' property from the IDispatch */
125     hRet = IDispatch_Invoke(pdispIn, DISPID_VALUE, &IID_NULL, lcid, DISPATCH_PROPERTYGET,
126                             &emptyParams, &srcVar, NULL, NULL);
127
128     if (SUCCEEDED(hRet))
...
--- snip ---

Initializing 'srcVar' before invoke call fixes this.

$ sha1sum ProteusVX.zip 
99b8de9a0468540fd6210d47717c8c3d452434c6  ProteusVX.zip

$ du -sh ProteusVX.zip 
66M	ProteusVX.zip

$ wine --version
wine-1.7.11-322-gafadda8

Regards
Comment 13 Nikolay Sivov 2014-02-07 14:51:24 UTC
Thanks, this is easy to reproduce with existing tests, I'll send a patch next week.
Comment 14 Anastasius Focht 2014-02-10 13:44:45 UTC
Hello folks,

this is fixed by commit http://source.winehq.org/git/wine.git/commitdiff/8c2b4bfe4899faa7f8438767ccacb13855ff17f0

The installer completes successfully now.

Thanks Nikolay

Regards
Comment 15 Alexandre Julliard 2014-02-20 12:37:54 UTC
Closing bugs fixed in 1.7.13.


Privacy Policy
If you have a privacy inquiry regarding this site, please write to [email protected]

Hosted By CodeWeavers