http://bugs.winehq.org/show_bug.cgi?id=29997
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #9 from Anastasius Focht focht@gmx.net 2012-03-17 17:26:40 CDT --- Hello,
I don't get a crash using clean WINEPREFIX but a message box is shown, stating "Invalid command line".
--- snip --- 0024:Call KERNEL32.__wine_kernel_init() ret=7bc534a2 ... 0024:Call KERNEL32.CreateProcessW(0013d9e0 L"Z:\home\focht\Downloads\StudioTax2011Install.exe",00148230 L" /i "C:\users\focht\Application Data\BHOK IT Consulting\StudioTax 2011\install\StudioTaxX64.msi" TRANSFORMS="C:\users\focht\Application Data\BHOK IT Consulting\StudioTax 2011\install\StudioTaxX64.mst" AI_SETUPEXEPATH="Z:\home\focht\Downloads\StudioTax2011Install.exe" SETUPEX"...,00000000,00000000,00000000,00000020,00000000,00000000,0032f684,0032f674) ret=0044ae41 002b:Call KERNEL32.__wine_kernel_init() ret=7bc534a2 0024:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0044ae41 ... 002b:Call KERNEL32.CreateNamedPipeW(00542950 L"\\.\pipe\ToServer42",00000003,00000006,000000ff,00000400,00000400,00001388,00000000) ret=00475fc9 002b:Ret KERNEL32.CreateNamedPipeW() retval=0000008c ret=00475fc9 ... 002b:Call KERNEL32.CreateProcessW(005426a8 L"Z:\home\focht\Downloads\StudioTax2011Install.exe",00544028 L"Z:\home\focht\Downloads\StudioTax2011Install.exe /i "C:\users\focht\Application Data\BHOK IT Consulting\StudioTax 2011\install\StudioTaxX64.msi" EXECUTEACTION="INSTALL" SECONDSEQUENCE="1" CLIENTPROCESSID="42" AI_MORE_CMD_LINE=1",00000000,00000000,00000000,00000000,00000000,00000000,0033ef10,0033ef74) ret=0047c6fb 0034:Call KERNEL32.__wine_kernel_init() ret=7bc534a2 002b:Ret KERNEL32.CreateProcessW() retval=00000001 ret=0047c6fb ... 0034:Call KERNEL32.CreateFileW(0052ef78 L"\\.\pipe\ToServer42",c0000000,00000000,00000000,00000003,00000000,00000000) ret=00475fef 0034:Ret KERNEL32.CreateFileW() retval=00000040 ret=00475fef ... 0034:Call KERNEL32.WriteFile(00000040,0052ef78,00000012,0033f7a4,00000000) ret=004762e2 002b:Ret KERNEL32.ConnectNamedPipe() retval=00000001 ret=004761a9 0034:Ret KERNEL32.WriteFile() retval=00000001 ret=004762e2 0034:Call KERNEL32.ReadFile(00000040,0052e720,00000400,0033f718,00000000) ret=0047620c 002b:Call KERNEL32.ReadFile(0000008c,00543818,00000400,0033ee08,00000000) ret=0047620c 002b:Ret KERNEL32.ReadFile() retval=00000001 ret=0047620c 002b:Call ntdll.RtlAllocateHeap(00528000,00000000,00000020) ret=0048bc1f 002b:Ret ntdll.RtlAllocateHeap() retval=00541860 ret=0048bc1f 002b:Call KERNEL32.PeekNamedPipe(0000008c,00000000,00000000,00000000,00000000,0033ee10) ret=00476257 002b:Ret KERNEL32.PeekNamedPipe() retval=00000001 ret=00476257 ... 0034:Call KERNEL32.lstrcmpiW(0033f7bc L"SET",004c28d4 L"/promptrestart") ret=00437bc0 0034:Ret KERNEL32.lstrcmpiW() retval=00000001 ret=00437bc0 0034:Call KERNEL32.lstrcmpiW(0033f7bc L"SET",004c28b8 L"/forcerestart") ret=00437bec 0034:Ret KERNEL32.lstrcmpiW() retval=00000001 ret=00437bec 0034:Call KERNEL32.lstrcmpiW(0033f7bc L"SET",004c28ac L"/log") ret=00437c18 0034:Ret KERNEL32.lstrcmpiW() retval=00000001 ret=00437c18 0034:Call ntdll.RtlAllocateHeap(00528000,00000000,00000004) ret=0048bc1f 0034:Ret ntdll.RtlAllocateHeap() retval=0052fe40 ret=0048bc1f 0034:Call ntdll.RtlAllocateHeap(00528000,00000000,00000200) ret=0048bc1f 0034:Ret ntdll.RtlAllocateHeap() retval=00530c48 ret=0048bc1f 0034:Call user32.LoadStringW(00400000,00002792,00530c48,00000100) ret=00448dad 0034:Ret user32.LoadStringW() retval=00000014 ret=00448dad ... 0034:Call user32.MessageBoxW(00000000,005309a0 L"Invalid command line",00000000,00000010) ret=0040a9c0 ... <server exits with message box dismissed> ... 002b:Call KERNEL32.WriteFile(0000008c,0033ef94,00000002,0033eea4,00000000) ret=00476339 002b:Ret KERNEL32.WriteFile() retval=00000000 ret=00476339 002b:Call KERNEL32.FlushFileBuffers(0000008c) ret=00476342 002b:Ret KERNEL32.FlushFileBuffers() retval=00000001 ret=00476342 002b:Call KERNEL32.ConnectNamedPipe(0000008c,00000000) ret=004761a9 002b:Ret KERNEL32.ConnectNamedPipe() retval=00000000 ret=004761a9 002b:Call KERNEL32.GetLastError() ret=004761b6 002b:Ret KERNEL32.GetLastError() retval=00000450 ret=004761b6 ... <client continues to churn CPU> --- snip ---
There are three "StudioTax2011Install.exe" processes.
1) bootstrapper 2) client (creates named pipe "ToServer") 3) server (opens the end)
After the server (3) terminated due to command line error the client (2) still tries to reconnect the pipe, churning CPU.
From a quick glance it might be a bug in the app installer itself (bug hidden
in Windows due to different stack usage of APIs). The command line parsing and error handling code doesn't really look robust (doesn't check if FormatMessage() failed due to untranslatable error -> accesses buffer content unconditionally and the like).
$ du -sh StudioTax2011Install.exe 24M StudioTax2011Install.exe
$ sha1sum StudioTax2011Install.exe bc4f4afcf7e3556a29e03ddfbdab2d2fded2aff0 StudioTax2011Install.exe
$ wine --version wine-1.5.0
Regards