https://bugs.winehq.org/show_bug.cgi?id=44587
Bug ID: 44587 Summary: TradeStation Setup Wizard ended prematurely Product: Wine Version: 3.2 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: christopher.m.penalver@gmail.com Distribution: ---
Created attachment 60566 --> https://bugs.winehq.org/attachment.cgi?id=60566 winecrash.txt
As per attached log, running TradeStation installer with Wine development ends prematurely.
I simply updated latest Ubuntu version fully, installed wine from default repositories, and immediately ran the installer with no modifications of any kind.
This doesn't happen with the same file in Windows 10 x64.
apt-cache policy wine-development wine-development: Installed: 3.2-1 Candidate: 3.2-1 Version table: *** 3.2-1 500 500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages 500 http://us.archive.ubuntu.com/ubuntu bionic/universe i386 Packages 100 /var/lib/dpkg/status
Installer: http://update.tradestation.com/Installs/TradeStation/10.00.00.567/TradeStati...
get-filehash "TradeStation Setup.exe"
Algorithm Hash Path --------- ---- ---- SHA256 8AE5ABEE163E75634FAAEAB6E9E878FD03ED20116E3B072A1226654D683D06A7 \ds\c\TradeStation Setup.exe
https://bugs.winehq.org/show_bug.cgi?id=44587
--- Comment #1 from Christopher M. Penalver christopher.m.penalver@gmail.com --- Created attachment 60567 --> https://bugs.winehq.org/attachment.cgi?id=60567 TradeStation install fail.png
Screenshot of failed install notice window.
https://bugs.winehq.org/show_bug.cgi?id=44587
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer URL| |http://update.tradestation. | |com/Installs/TradeStation/1 | |0.00.00.567/TradeStation%20 | |Setup.exe Component|-unknown |msi Status|UNCONFIRMED |RESOLVED Summary|TradeStation Setup Wizard |TradeStation 10.0 Setup |ended prematurely |Wizard ends prematurely | |(custom action dll instance | |data not reset due to | |pinning of dll during | |execution of multiple | |custom actions) Resolution|--- |DUPLICATE CC| |focht@gmx.net
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
After some hours of debugging I figured out this is a dupe of bug 10365
The main installer bundles multiple prerequisites:
--- snip --- $ pwd /home/focht/.wine/drive_c/users/focht/Temp/TRADESTATION20180224
$ ls -1sh total 206M 67M dotnetfx452.exe 113M install.msi 4.0K patching.ini 2.5M SSCERuntime_x64-ENU.exe 2.3M SSCERuntime_x86-ENU.exe 196K TSPreRequisiteInstaller.exe 4.0K TSPreRequisiteInstaller.ini 14M vc_redist.x86.exe 1.7M Windows6.0-KB942288-v2-x86.msu 3.0M WindowsServer2003-KB942288-v4-x86.exe 3.2M WindowsXP-KB942288-v3-x86.exe --- snip ---
and runs their installers prior to the main installer.
Microsoft Visual C++ 2015 Runtime x86:
--- snip --- 0040:fixme:advapi:CreateProcessAsUserW 0x78 (null) L"C:\users\focht\Temp\TRADESTATION20180224\vc_redist.x86.exe /passive /showfinalerror /norestart /repair" (nil) (nil) 0 0x08000000 (nil) (null) 0x53ea00 0x53ea48 - semi-stub --- snip ---
SQL Server Compact 4.0 x86:
--- snip --- 0040:fixme:advapi:CreateProcessAsUserW 0x7c (null) L"C:\users\focht\Temp\TRADESTATION20180224\SSCERuntime_x86-ENU.exe /i /passive /norestart" (nil) (nil) 0 0x08000000 (nil) (null) 0x53ea00 0x53ea48 - semi-stub --- snip ---
Microsoft .NET Framework 4.5.2 x86 (NOTE: I have Wine-Mono disabled at compile time by default hence any .NET Frameworks will always be installed if requested):
--- snip --- 0040:fixme:advapi:CreateProcessAsUserW 0x80 (null) L"C:\users\focht\Temp\TRADESTATION20180224\dotnetfx452.exe /passive /showfinalerror /norestart" (nil) (nil) 0 0x08000000 (nil) (null) 0x53ea00 0x53ea48 - semi-stub --- snip ---
Finally the main installer for TradeStation 10.0:
--- snip --- 0040:fixme:advapi:CreateProcessAsUserW 0x88 (null) L"msiexec /i "C:\users\focht\Temp\TRADESTATION20180224\install.msi" ProductLanguage="1033" /lv*x "C:\users\Public\Application Data\TradeStation Technologies\TradeStation\Common\Logs\TSInstall2241248.log"" (nil) (nil) 0 0x08000000 (nil) (null) 0x53dd60 0x53dda8 - semi-stub ... 0170:err:msi:ITERATE_Actions Execution halted, action L"TS_CA_BeforeInstallFilesParam" returned 1603 0170:err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1603 --- snip ---
Trace log:
--- snip --- $ pwd /home/focht/.wine/drive_c/users/focht/Temp/TRADESTATION20180224
$ WINEDEBUG=+seh,+msi,+relay wine msiexec -i install.msi >>log.txt 2>&1 ... 002f:trace:msi:ACTION_CustomAction Handling custom action L"TS_CA_BeginInstall" (101 L"TradeStationCustomActions.dll" L"BeginInstall") ... 002f:Call KERNEL32.CreateFileW(0018e500 L"C:\users\focht\Temp\msia74d.tmp",40000000,00000000,00000000,00000003,00000080,00000000) ret=7ec72233 002f:Ret KERNEL32.CreateFileW() retval=0000006c ret=7ec72233 ... 002f:trace:msi:HANDLE_CustomType1 Calling function L"BeginInstall" from L"C:\users\focht\Temp\msia74d.tmp" ... 002f:trace:msi:ACTION_CustomAction Handling custom action L"TS_CA_ExtractBinary" (101 L"TradeStationCustomActions.dll" L"ExtractBinary") 002f:trace:msi:HANDLE_CustomType1 Calling function L"ExtractBinary" from L"C:\users\focht\Temp\msia74d.tmp" ... <many times re-use of pinned temp binary for different CAs> ... 002f:trace:msi:ACTION_CustomAction Handling custom action L"TS_CA_ValidateInstallFolder" (1 L"TradeStationCustomActions.dll" L"ValidateInstallFolder") 002f:trace:msi:HANDLE_CustomType1 Calling function L"ValidateInstallFolder" from L"C:\users\focht\Temp\msia74d.tmp" ... 0033:trace:msi:ACTION_CallDllFunction calling L"ValidateInstallFolder" ... 0033:Call msi.MsiRecordSetStringA(00000005,00000000,101f5240 "ValidateInstallFolder: TSLOG: Install folder path for verification is C:\Program Files\TradeStation 10.0\.") ret=10021817 ... 0033:RET TradeStationCustomActions.ValidateInstallFolder(00000002) retval=00000000 ret=7ec72bfa ... 0033:trace:msi:DllThread custom action (33) returned 0 ... 0033:Call PE DLL (proc=0x10154e18,module=0x10000000 L"msia74d.tmp",reason=THREAD_DETACH,res=(nil)) ... 002f:trace:msi:ACTION_CustomAction Handling custom action L"TS_CA_ValidateInstallFolder" (1 L"TradeStationCustomActions.dll" L"ValidateInstallFolder") 002f:trace:msi:HANDLE_CustomType1 Calling function L"ValidateInstallFolder" from L"C:\users\focht\Temp\msia74d.tmp" ... 002f:trace:msi:wait_thread_handle waiting for L"TS_CA_ValidateInstallFolder" ... 0034:Starting thread proc 0x7ec72fe7 (arg=0xf4c08c) 0034:trace:msi:DllThread custom action (34) started ... 0034:trace:msi:ACTION_CallDllFunction calling L"ValidateInstallFolder" 0034:Call KERNEL32.GetEnvironmentVariableW(7ece0ecc L"MsiBreak",007ffb2c,00000104) ret=7ec7299e 0034:Ret KERNEL32.GetEnvironmentVariableW() retval=00000000 ret=7ec7299e 0034:Call msi.MsiGetActiveDatabase(00000002) ret=1002127a 0034:trace:msi:MsiGetActiveDatabase (2) ... 0034:trace:msi:MsiGetActiveDatabase (1) ... 0034:Ret msi.MsiGetActiveDatabase() retval=00000004 ret=1002127a
... 0034:Call msi.MsiRecordSetStringA(00000005,00000000,101f5240 "ValidateInstallFolder: Error 0x80004005: Failed to get previous size of property data string.") ret=10021817 ... 0034:Call msi.MsiRecordSetStringA(00000005,00000000,101f5240 "ValidateInstallFolder: Error 0x80004005: failed to get INSTALLDIR property value") ret=10021817 ... 0034:trace:msi:DllThread custom action (34) returned 1603 ... 0034:Call PE DLL (proc=0x10154e18,module=0x10000000 L"msia74d.tmp",reason=THREAD_DETACH,res=(nil)) ... --- snip ---
The 0x80004005 errors are internal codes, only seen when debugging.
The custom action stores multiple installer properties in internal custom action data buffers. It appends data if needed during consecutive calls within the same custom action function call. Due to the pinning of the custom action dll(s), some instance data is not reset. The custom action finds non-zero pointers and assumes this is "append" mode. It uses HeapSize() to figure out the original buffer size and eventually will resize if needed. Since the original heap block was freed and potentially recycled by other heap usage, HeapSize() fails ("in-use" heap magic can't be found), ultimately causing the whole custom action to fail.
See my analysis for the pinning problem in bug 10365 for further details:
* https://bugs.winehq.org/show_bug.cgi?id=10365#c21 * https://bugs.winehq.org/show_bug.cgi?id=10365#c23
Basically to fix the brain damage in Microsoft Office 2010 installer, other app installers have to suffer.
I've tested this installer by unloading the temp dll after the custom action finished and it fixes the problem as expected.
$ sha1sum TradeStation\ Setup.exe 5dea044303fa0fb6707e15e65016cb7de63526da TradeStation Setup.exe
$ du -sh TradeStation\ Setup.exe 187M TradeStation Setup.exe
$ wine --version wine-3.2-173-gea82a00a42
Regards
*** This bug has been marked as a duplicate of bug 10365 ***
https://bugs.winehq.org/show_bug.cgi?id=44587
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #3 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing Duplicates
https://bugs.winehq.org/show_bug.cgi?id=44587
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://update.tradestation. |https://web.archive.org/web |com/Installs/TradeStation/1 |/20211120100249/http://upda |0.00.00.567/TradeStation%20 |te.tradestation.com/Install |Setup.exe |s/TradeStation/10.00.00.567 | |/TradeStation%20Setup.exe
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
adding stable download link via Internet Archive for documentation.
https://web.archive.org/web/20211120100249/http://update.tradestation.com/In...
https://www.virustotal.com/gui/file/8ae5abee163e75634faaeab6e9e878fd03ed2011...
$ sha1sum TradeStation\ Setup.exe 5dea044303fa0fb6707e15e65016cb7de63526da TradeStation Setup.exe
$ du -sh TradeStation\ Setup.exe 187M TradeStation Setup.exe
Regards