http://bugs.winehq.org/show_bug.cgi?id=16876
Summary: .NET 3.0: WIC installer hangs due to bug in property sheet control Product: Wine Version: 1.1.12 Platform: Other URL: http://www.microsoft.com/downloads/details.aspx?FamilyID =10cc340b-f857-4a14-83f5-25634c3bf043 OS/Version: other Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
after bug 16875 is fixed, there is another bug unearthed by WIC installer. Normally you won't notice it because the main installer claims success on this sub-installer.
If you run WIC installer manually and press "finish" in last property page it simply hangs.
Prerequisite:
1. clean WINEPREFIX 2. download .NET 3.0 Framework installer from: http://download.microsoft.com /download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe (sha1sum: a566bcd2ffffc3842a95adc57f7df3f8cd11577f) 3. export _SFX_CAB_SHUTDOWN_REQUEST=1 (workaround, see bug 9158) 4. wine ./dotnetfx3setup.exe
It might take a while until all required packages are downloaded using BITS.
Note: If you need to redo steps, backup the directory "dotnetfx304506.30" from "c:\windows\temp" to a different location, remove ~/.wine, copy "dotnetfx304506.30" again to "c:\windows\temp" to prevent BITS from downloading over and over again.
There is a (ui) thread spawned to display and handle property sheet:
--- snip --- 0084:Starting thread proc 0x1043904 (arg=(nil)) ... 0084:Call comctl32.CreatePropertySheetPageW(7ec515b4) ret=01045ccb ... 0084:Ret comctl32.CreatePropertySheetPageW() retval=00149568 ret=01045ccb ... 0084:Call comctl32.PropertySheetW(7ec516e0) ret=01045ffc 0084:Call KERNEL32.GlobalAlloc(00000040,00000084) ret=7763bc0e 0084:Ret KERNEL32.GlobalAlloc() retval=006026a8 ret=7763bc0e 0084:trace:propsheet:PropertySheetW (0x7ec516e0) 0084:trace:propsheet:PROPSHEET_CollectSheetInfoW ** PROPSHEETHEADER ** dwSize 52 dwFlags 01198100 hwndParent (nil) hInstance (nil) pszCaption L"\1828\7ec5" nPages 5 pfnCallback 0x1043cb1 ... 0084:trace:propsheet:PROPSHEET_PropertySheet startpage: 0 of 5 pages 0084:trace:propsheet:PROPSHEET_CreateDialog ... 0084:trace:propsheet:PROPSHEET_Finish active_page 4 ... 0084:trace:propsheet:PROPSHEET_CleanUp ... 0084:trace:propsheet:PROPSHEET_Finish msg result 0 ... 0084:Ret comctl32.PropertySheetW() retval=00000001 ret=01045ffc .. 0084:Call user32.GetMessageA(7ec519ec,00000000,00000000,00000000) ret=01043942 <hangs here> --- snip ---
Relevant code:
--- snip dlls/comctl32/propsheet.c --- static BOOL PROPSHEET_Finish(HWND hwndDlg) { .. if (psInfo->result == 0) psInfo->result = IDOK; if (psInfo->isModeless) psInfo->activeValid = FALSE; else psInfo->ended = TRUE;
return TRUE; } --- snip dlls/comctl32/propsheet.c ---
--- snip dlls/comctl32/propsheet.c --- static INT_PTR PROPSHEET_PropertySheet(PropSheetInfo* psInfo, BOOL unicode) { ...
if(!psInfo->isModeless) { parent = psInfo->ppshheader.hwndParent; if (parent) EnableWindow(parent, FALSE); } bRet = PROPSHEET_CreateDialog(psInfo); if(!psInfo->isModeless) { bRet = do_loop(psInfo); if (parent) EnableWindow(parent, TRUE); } return bRet; } --- snip dlls/comctl32/propsheet.c ---
--- snip dlls/comctl32/propsheet.c --- static INT do_loop(const PropSheetInfo *psInfo) { MSG msg; INT ret = -1; HWND hwnd = psInfo->hwnd;
while(IsWindow(hwnd) && !psInfo->ended && (ret = GetMessageW(&msg, NULL, 0, 0))) { if(ret == -1) break;
if(!IsDialogMessageW(hwnd, &msg)) { TranslateMessage(&msg); DispatchMessageW(&msg); } }
if(ret == 0) { PostQuitMessage(msg.wParam); ret = -1; }
if(ret != -1) ret = psInfo->result;
DestroyWindow(hwnd); return ret; } --- snip dlls/comctl32/propsheet.c ---
This propery sheet is modal. When the message pumps exits, the return value is derived from "psInfo->result" which is set to IDOK (button "finish") in PROPSHEET_Finish().
Unfortunately this tells the app the property sheet is modeless and it tries to setup it's own message pump after PropertySheetW() return which obviously hangs because the control is no more present at this time.
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Depends on| |16875
--- Comment #1 from Anastasius Focht focht@gmx.net 2009-01-11 04:31:36 --- Adding dependency as bug 16875 needs to be fixed before to come here...
http://bugs.winehq.org/show_bug.cgi?id=16876
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |download, Installer
--- Comment #2 from Austin English austinenglish@gmail.com 2009-01-11 13:47:12 --- Confirming.
http://bugs.winehq.org/show_bug.cgi?id=16876
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet
http://bugs.winehq.org/show_bug.cgi?id=16876
Bug 16876 depends on bug 16875, which changed state.
Bug 16875 Summary: .NET 3.0: WIC installer fails due to bug(s) in setupapi.SetupGetTargetPathW http://bugs.winehq.org/show_bug.cgi?id=16875
What |Old Value |New Value ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #3 from Nikolay Sivov bunglehead@gmail.com 2009-05-23 10:40:27 --- Created an attachment (id=21262) --> (http://bugs.winehq.org/attachment.cgi?id=21262) Some tests and an attempt to fix
Hi.
Please take a look ata these patches - first is about to test PSM_PRESSBUTTON and second is a possible fix for modal sheets.
It's my first look at property sheets so first question is about tests. Is it a right way to do?
Nikolay S.
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #4 from Austin English austinenglish@gmail.com 2009-05-24 14:48:55 --- It appears to help, but the installer then crashes in rpcrt4.
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com 2009-05-24 14:52:52 --- (In reply to comment #4)
It appears to help, but the installer then crashes in rpcrt4.
A question was actually about a way to test this. Maybe I've just force a return value.
http://bugs.winehq.org/show_bug.cgi?id=16876
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|dotnet |patch URL|http://www.microsoft.com/do |http://download.microsoft.c |wnloads/details.aspx?Family |om/download/f/f/1/ff178bb1- |ID=10cc340b-f857-4a14-83f5- |da91-48ed-89e5-478a99387d4f |25634c3bf043 |/wic_x86_enu.exe Summary|.NET 3.0: WIC installer |Microsoft Windows Imaging |hangs due to bug in |Component installer hangs |property sheet control |due to bug in property | |sheet control
--- Comment #6 from Anastasius Focht focht@gmx.net 2009-08-07 03:00:35 --- Hello,
removing dependency to .NET 3.0 installer. Still a valid bug though. For testing purposes, WIC v1.0 installer is available as standalone package here:
http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a993...
Reproduce: clean WINEPREFIX, start the installer, press "finish" and see it hang.
Nikolay's patch fixes the problem (as expected) though I leave the QA/review to wine-patches subscribers ;-)
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #7 from Anastasius Focht focht@gmx.net 2010-01-30 07:47:28 --- Hello,
this bug also affects Windows PowerShell installer (http://appdb.winehq.org/objectManager.php?sClass=version&iId=13413), preventing it from terminating in the end. There are probably more Microsoft installers affected.
The problem and a solution is known for quite some time now, please send your patch to wine-patches for review/inclusion.
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |21549
http://bugs.winehq.org/show_bug.cgi?id=16876
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dank@kegel.com Target Milestone|--- |1.2.0
--- Comment #8 from Dan Kegel dank@kegel.com 2010-02-02 05:33:49 --- Affects multiple apps, good analysis, patch -> nominating for 1.2
http://bugs.winehq.org/show_bug.cgi?id=16876
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Microsoft Windows Imaging |Various Microsoft |Component installer hangs |component/prerequisite |due to bug in property |installers hang due to bug |sheet control |in property sheet control | |(WIC, PowerShell, XPSEPSC)
--- Comment #9 from Anastasius Focht focht@gmx.net 2011-04-25 04:27:02 CDT --- Hello,
also affects "XML Paper Specification Shared Components Pack" (XPSEPSC-x86-en-US.exe from http://go.microsoft.com/fwlink/?LinkId=96332), a .NET 3.0 Framework SP1 prerequisite.
Can be worked around forcing non-gui/unattended install mode:
$> wine ./XPSEPSC-x86-en-US.exe /quiet /passive /norestart
Would be nice if this long standing bug gets fixed as a working patch exists and various installers suffer from it.
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #10 from Anastasius Focht focht@gmx.net 2012-01-29 06:38:47 CST --- Hello,
hang is still present.
WIC installer is now broken due to http://source.winehq.org/git/wine.git/commitdiff/e3fb0783294b47584d3b181aae4... ("photometadatahandler: Add stub dll").
Besides "windowscodecs.dll" you will also need to remove Wine builtin "photometadatahandler.dll" from "system32" folder prior running WIC installer.
--- snip --- rm ~/.wine/drive_c/windows/system32/windowscodecs.dll rm ~/.wine/drive_c/windows/system32/photometadatahandler.dll --- snip ---
'winetricks windowscodecs' is also broken in this aspect.
$ sha1sum wic_x86_enu.exe 53c18652ac2f8a51303deb48a1b7abbdb1db427f wic_x86_enu.exe
$ wine --version wine-1.4-rc1
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #11 from Anastasius Focht focht@gmx.net 2013-05-01 05:19:33 CDT --- Hello folks,
same procedure as every year .. still present.
Can be reproduced with current Wine as follows with clean 32-bit WINEPREFIX. Remove builtins physically before running installer:
--- snip --- $ find .wine/drive_c/windows/system32/ ( -iname windowsc*.dll -o -iname photo*.dll ) -exec rm {} ; --- snip ---
To work around broken libx11 on various distros, prepend "taskset -c 0" (bug 32859) before the command:
--- snip --- $ taskset -c 0 wine ./wic_x86_enu.exe --- snip ---
After install completes and pressing "finish" button the installer doesn't terminate (everything explained in previous comments, patch is available for long time).
$ wine --version wine-1.5.29-38-g8e4317c
Regards
http://bugs.winehq.org/show_bug.cgi?id=16876
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bunglehead@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=16876
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Hardware|Other |x86 Target Milestone|1.2.0 |--- OS|other |Linux
--- Comment #12 from Anastasius Focht focht@gmx.net --- Hello folks,
same procedure as every year .. still present.
'Image Mastering API 2.0' which is a required prerequisite for 'Windows 7 USB/DVD download tool' is also affected by this.
Main page: http://www.microsoftstore.com/store/msusa/html/pbPage.Help_Win7_usbdvd_dwnTo...
'Image Mastering API v2.0 (IMAPIv2.0) for Windows XP (KB932716)' Download:
http://www.microsoft.com/en-us/download/details.aspx?id=17073
Prerequisite: 'winetricks -q xmllite' (bug 6194)
The installer hangs on exit.
$ sha1sum WindowsXP-KB932716-v2-x86-ENU.exe 9f8f8369716f6100ea04b6549aaf8e2a22fb0042 WindowsXP-KB932716-v2-x86-ENU.exe
$ du -sh WindowsXP-KB932716-v2-x86-ENU.exe 760K WindowsXP-KB932716-v2-x86-ENU.exe
$ wine --version wine-1.7.19-70-gd6a59f7
Regards
https://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #13 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
$ wine --version wine-1.7.35-108-g512db44
Regards
https://bugs.winehq.org/show_bug.cgi?id=16876
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |super_man@post.com
--- Comment #14 from super_man@post.com --- The patch still applies partly.
patching file dlls/comctl32/tests/propsheet.c Hunk #1 FAILED at 199. 1 out of 1 hunk FAILED -- saving rejects to file dlls/comctl32/tests/propsheet.c.rej patching file dlls/comctl32/propsheet.c Hunk #1 succeeded at 1699 (offset -4 lines). Hunk #2 succeeded at 2721 (offset -21 lines). patching file dlls/comctl32/tests/propsheet.c Hunk #1 FAILED at 310. 1 out of 1 hunk FAILED -- saving rejects to file dlls/comctl32/tests/propsheet.c.rej
wine-1.9.1-226-gaf4a757
https://bugs.winehq.org/show_bug.cgi?id=16876
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|bunglehead@gmail.com |
https://bugs.winehq.org/show_bug.cgi?id=16876
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
--- Comment #15 from winetest@luukku.com --- Still applies against wine 2.0-git, without the tests.
patching file dlls/comctl32/propsheet.c Hunk #1 succeeded at 1691 (offset -12 lines). Hunk #2 succeeded at 2713 (offset -29 lines).
https://bugs.winehq.org/show_bug.cgi?id=16876
winetaste@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetaste@gmx.net
https://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #16 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
--- snip --- $ export WINEPREFIX=$(pwd)/winetest WINEARCH=win32 $ wineboot
# WIC installer is for Windows XP (installer will abort on default Win7 prefix) $ winetricks -q winxp
# Remove files that are newer version otherwise installer will refuse to update $ find $WINEPREFIX/drive_c/windows/system32/ ( -iname windowsc*.dll -o -iname *photo*.dll ) -exec rm {} ;
$ taskset -c 0 wine ./wic_x86_enu.exe <hangs at the end> --- snip ---
$ wine --version wine-3.7-156-g6d6b4bffb3
Regards
https://bugs.winehq.org/show_bug.cgi?id=16876
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=16876
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Various Microsoft |Multiple Microsoft |component/prerequisite |component/prerequisite |installers hang due to bug |installers hang in basic UI |in property sheet control |mode due to incorrect |(WIC, PowerShell, XPSEPSC) |PropertySheet 'Finish' | |return value for modal | |sheets (WIC, PowerShell, | |XPSEPSC) URL|http://download.microsoft.c |https://web.archive.org/web |om/download/f/f/1/ff178bb1- |/20110608194929/http://down |da91-48ed-89e5-478a99387d4f |load.microsoft.com/download |/wic_x86_enu.exe |/f/f/1/ff178bb1-da91-48ed-8 | |9e5-478a99387d4f/wic_x86_en | |u.exe
--- Comment #17 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, obviously still present.
Adding stable link via Internet Archive:
https://web.archive.org/web/20110608194929/http://download.microsoft.com/dow...
--- snip --- $ rm -rf ~/.wine
$ export WINEARCH=win32 && winecfg /v winxp
$ find ~/.wine/drive_c/windows/system32/ ( -iname windowsc*.dll -o -iname *photo*.dll ) -print -exec rm {} ;
/home/focht/.wine/drive_c/windows/system32/windowscodecs.dll /home/focht/.wine/drive_c/windows/system32/windowscodecsext.dll /home/focht/.wine/drive_c/windows/system32/photometadatahandler.dll /home/focht/.wine/drive_c/windows/system32/wmphoto.dll
$ taskset -c 0 wine ./wic_x86_enu.exe <hangs> --- snip ---
@Nikolay
It might be worth to make another attempt to send the patch to wine-devel (if there ever was one). I would be grateful if the 12th anniversary of this bug can be avoided.
$ wine --version wine-5.9
Regards
https://bugs.winehq.org/show_bug.cgi?id=16876
--- Comment #18 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, obviously still present.
Wine source:
https://source.winehq.org/git/wine.git/blob/9bc3a9f78bf5e6a09d4e9811f645def4...
--- snip --- 1654 /****************************************************************************** 1655 * PROPSHEET_Finish 1656 */ 1657 static BOOL PROPSHEET_Finish(HWND hwndDlg) 1658 { 1659 PSHNOTIFY psn; 1660 HWND hwndPage; 1661 LRESULT msgResult = 0; 1662 PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr); 1663 1664 TRACE("active_page %d\n", psInfo->active_page); 1665 if (psInfo->active_page < 0) 1666 return FALSE; 1667 1668 psn.hdr.code = PSN_WIZFINISH; 1669 psn.hdr.hwndFrom = hwndDlg; 1670 psn.hdr.idFrom = 0; 1671 psn.lParam = 0; 1672 1673 hwndPage = psInfo->proppage[psInfo->active_page].hwndPage; 1674 1675 msgResult = SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn); 1676 1677 TRACE("msg result %ld\n", msgResult); 1678 1679 if (msgResult != 0) 1680 return FALSE; 1681 1682 if (psInfo->result == 0) 1683 psInfo->result = IDOK; 1684 if (psInfo->isModeless) 1685 psInfo->activeValid = FALSE; 1686 else 1687 psInfo->ended = TRUE; 1688 1689 return TRUE; 1690 } --- snip ---
$ wine --version wine-6.0-rc5-25-g9bc3a9f78bf
Regards