https://bugs.winehq.org/show_bug.cgi?id=49260
Bug ID: 49260 Summary: Protection c0000005 with MFC CPropertySheet::DoModal Product: Wine Version: 5.9 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mfc Assignee: wine-bugs@winehq.org Reporter: reinhold.hoffmann@hotmail.com Distribution: ---
Created attachment 67266 --> https://bugs.winehq.org/attachment.cgi?id=67266 Protections by CPropertySheet::DoModal
Applications using the MFC CPropertySheet::DoModal run into c0000005 protections every time the mouse moves over the app. Frequent protections are created every time the mouse moves. For complex CPropertySheet dialogs an app freezes.
I used the example from https://www.codeguru.com/cpp/controls/propertysheet/article.php/c605/Update-... (and just added AfxMessageBox("Start Program"); before DoModal to see in the log file when the protections start)
Please find attached - The codeguru example created with VS2010 as x64 app: NewPropertySheet.exe - The log file Wine_LOG.txt created by the command WINEDEBUG=+seh wine64 NewPropertySheet.exe >& Wine_LOG.txt
This example app does not freeze but complex apps with CPropertySheet::DoModal do in particular on Mac PCs.
Reinhold
https://bugs.winehq.org/show_bug.cgi?id=49260
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|mfc |-unknown
https://bugs.winehq.org/show_bug.cgi?id=49260
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|Protection c0000005 with |Some MFC applications using |MFC CPropertySheet::DoModal |CPropertySheet freeze in | |CPropertySheet::DoModal on | |Mac OS X
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello Reinhold,
the exceptions are by design. The app makes use of LocalXXX() API in message handler(s) and sometimes passes NULL handle (HLOCAL) to GlobalLock(). Wine needs to figure out if the handle is a valid pointer and you basically trace the result of the access with 'seh' debug channel.
Disassembly of one location where the API is used by your example app:
--- snip --- 0000000140007988 | mov qword ptr ss:[rsp+8],rbx | 000000014000798D | mov qword ptr ss:[rsp+10],rbp | 0000000140007992 | mov qword ptr ss:[rsp+18],rsi | 0000000140007997 | push rdi | 0000000140007998 | sub rsp,20 | 000000014000799C | mov rdi,rdx | 000000014000799F | mov rbx,rcx | 00000001400079A2 | call newpropertysheet.14000A034 | 00000001400079A7 | xor ebp,ebp | 00000001400079A9 | test eax,eax | 00000001400079AB | je newpropertysheet.1400079B7 | 00000001400079AD | mov eax,1 | 00000001400079B2 | jmp newpropertysheet.140007A91 | 00000001400079B7 | mov rdx,qword ptr ds:[1401E9370] | "AfxClosePending" 00000001400079BE | mov rcx,qword ptr ds:[rbx+40] | 00000001400079C2 | call qword ptr ds:[140168EF0] | GetPropA 00000001400079C8 | mov rcx,rax | 00000001400079CB | mov rsi,rax | can be NULL 00000001400079CE | call qword ptr ds:[140168868] | GlobalLock 00000001400079D4 | test rax,rax | 00000001400079D7 | je newpropertysheet.140007A3A | 00000001400079D9 | cmp dword ptr ds:[rax],1 | 00000001400079DC | jne newpropertysheet.140007A31 | 00000001400079DE | mov rcx,qword ptr ds:[rbx+40] | 00000001400079E2 | xor r9d,r9d | 00000001400079E5 | xor r8d,r8d | 00000001400079E8 | mov edx,476 | 00000001400079ED | call qword ptr ds:[140169098] | SendMessageA 00000001400079F3 | test rax,rax | 00000001400079F6 | jne newpropertysheet.140007A31 | 00000001400079F8 | mov rcx,rsi | 00000001400079FB | call qword ptr ds:[140168770] | GlobalUnlock 0000000140007A01 | mov rdx,qword ptr ds:[1401E9370] | "AfxClosePending" 0000000140007A08 | mov rcx,qword ptr ds:[rbx+40] | 0000000140007A0C | call qword ptr ds:[140168EF8] | RemovePropA 0000000140007A12 | test rax,rax | 0000000140007A15 | je newpropertysheet.140007A20 | 0000000140007A17 | mov rcx,rax | 0000000140007A1A | call qword ptr ds:[<&JMP.&GlobalFree>] | 0000000140007A20 | mov rax,qword ptr ds:[rbx] | 0000000140007A23 | mov rcx,rbx | 0000000140007A26 | call qword ptr ds:[rax+C0] | 0000000140007A2C | jmp newpropertysheet.1400079AD | 0000000140007A31 | mov rcx,rsi | 0000000140007A34 | call qword ptr ds:[140168770] | GlobalUnlock 0000000140007A3A | cmp dword ptr ds:[rdi+8],100 | 0000000140007A41 | jne newpropertysheet.140007A86 | 0000000140007A43 | mov ecx,11 | 0000000140007A48 | call qword ptr ds:[140168F00] | GetAsyncKeyState 0000000140007A4E | test ax,ax | 0000000140007A51 | jns newpropertysheet.140007A86 | 0000000140007A53 | cmp qword ptr ds:[rdi+10],9 | 0000000140007A58 | je newpropertysheet.140007A68 | 0000000140007A5A | cmp qword ptr ds:[rdi+10],21 | 0000000140007A5F | je newpropertysheet.140007A68 | 0000000140007A61 | cmp qword ptr ds:[rdi+10],22 | 0000000140007A66 | jne newpropertysheet.140007A86 | 0000000140007A68 | mov rcx,qword ptr ds:[rbx+40] | 0000000140007A6C | mov r9,rdi | 0000000140007A6F | xor r8d,r8d | 0000000140007A72 | mov edx,475 | 0000000140007A77 | call qword ptr ds:[140169098] | SendMessageA 0000000140007A7D | test rax,rax | 0000000140007A80 | jne newpropertysheet.1400079AD | 0000000140007A86 | mov rdx,rdi | 0000000140007A89 | mov rcx,rbx | 0000000140007A8C | call newpropertysheet.14000B578 | 0000000140007A91 | mov rbx,qword ptr ss:[rsp+30] | 0000000140007A96 | mov rbp,qword ptr ss:[rsp+38] | 0000000140007A9B | mov rsi,qword ptr ss:[rsp+40] | 0000000140007AA0 | add rsp,20 | 0000000140007AA4 | pop rdi | 0000000140007AA5 | ret | --- snip ---
https://source.winehq.org/git/wine.git/blob/8257fe88fb99ca0bdeec27b47b7cf835...
--- snip --- 684 /*********************************************************************** 685 * LocalLock (kernelbase.@) 686 */ 687 LPVOID WINAPI DECLSPEC_HOTPATCH LocalLock( HLOCAL hmem ) 688 { 689 void *ret = NULL; 690 691 if (is_pointer( hmem )) 692 { 693 __TRY 694 { 695 volatile char *p = hmem; 696 *p |= 0; 697 } 698 __EXCEPT_PAGE_FAULT 699 { 700 return NULL; 701 } 702 __ENDTRY 703 return hmem; 704 } 705 706 RtlLockHeap( GetProcessHeap() ); 707 __TRY 708 { 709 struct local_header *header = get_header( hmem ); 710 if (header->magic == MAGIC_LOCAL_USED) 711 { 712 ret = header->ptr; 713 if (!header->ptr) SetLastError( ERROR_DISCARDED ); 714 else if (header->lock < LMEM_LOCKCOUNT) header->lock++; 715 } 716 else 717 { 718 WARN( "invalid handle %p (magic: 0x%04x)\n", hmem, header->magic ); 719 SetLastError( ERROR_INVALID_HANDLE ); 720 } 721 } 722 __EXCEPT_PAGE_FAULT 723 { 724 WARN("(%p): Page fault occurred ! Caused by bug ?\n", hmem); 725 SetLastError( ERROR_INVALID_HANDLE ); 726 } 727 __ENDTRY 728 RtlUnlockHeap( GetProcessHeap() ); 729 return ret; 730 } --- snip ---
Emphasis on line 696 which causes the page fault you see.
Alexandre changed that piece of code in commit https://source.winehq.org/git/wine.git/commit/a76518c186ac0893ea460cd3b06109... ("kernelbase: Use exception handlers instead of IsBad* functions.").
One could argue the value could be checked for NULL first to avoid the page fault at all. Still, it shouldn't change the outcome. These exceptions are not visible to the app. The app doesn't install vectored exception handler / VEH.
Please provide a link to an app which shows the "freeze" behaviour (and steps to reproduce).
Regards
https://bugs.winehq.org/show_bug.cgi?id=49260
Ken Thomases ken@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- OS|Linux |Mac OS X
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #2 from Reinhold reinhold.hoffmann@hotmail.com --- Hello Anastasius,
First of all, thanks for your immediate response and analysis.
Here is the scenario for a complex app which freezes in CPropertySheet::DoModal. The app is a x64 created with Visual Studio.
The freeze happens from OS X El Capitan through Catalina (here the x64 Wine is only installed) from Wine 5.0 to the latest available version on Mac Wine 5.7 downloaded from https://dl.winehq.org/wine-builds/macosx/download.html.
Steps: Latest available Wine 5.7 installed from https://dl.winehq.org/wine-builds/macosx/download.html Download Trial Version of Composer English from https://www.notation.com/Download.php
Install it (when it is saved into the Downloads folder) with the command line wine64 msiexec /i $HOME/Downloads/Inst_NS_Composer_4_English_Trial.msi proceed with the default steps
Start the app by wine64 $HOME/.wine/drive_c/Program\ Files/Notation_4/Composer_4/Composer.exe
Click on the front page to OPEN A MIDI, XML OR .NOT FILE
Open the file Minuet.mid
Scenario 1:
From the Menu
Staff -> Transpose actual concert pitches NEXT When the page „Transpose Actual Pitches (step 2 of 2)" opens, the app freezes
Scenario 2:
From the Menu
Part -> Easy Notes part NEXT NEXT NEXT When the page „Prepare Part Wizard: Chord Names Option (Step 4 of 5)", the app freezes
In both cases the app freezes when calling CPropertySheet::DoModal
=========================================
Additional observations:
(1) when launching the app with WINEDEBUG=+seh as such WINEDEBUG=+seh wine64 $HOME/.wine/drive_c/Program\ Files/Notation_4/Composer_4/Composer.exe there is no freeze and all works fine.
(2) when using CPropertySheet::Create instead of CPropertySheet::DoModal all works fine, too. However, DoModal cannot be just replaced by Create.
==========================================
Thanks for your help
https://bugs.winehq.org/show_bug.cgi?id=49260
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://web.archive.org/web | |/20200527180818/https://www | |.notation.com/DownloadTrial | |Product.php?Trial_Product=C | |omposer_English Summary|Some MFC applications using |Notation Composer 4 (MFC |CPropertySheet freeze in |app) freezes in |CPropertySheet::DoModal on |CPropertySheet::DoModal on |Mac OS X |Mac OS X Keywords| |download
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello Reinhold,
the app 'Notation Composer 4' works well here on Linux. No freeze in property sheet dialog on any of the steps you've provided. I've tested with Wine 5.7, 5.9 and from current master HEAD (wine-5.9-67-g8257fe88fb). It might be an Mac OS X specific thing here.
The app seems to be Wine aware:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Notation_4/Composer_4
$ WINEDEBUG=+seh,+relay,+win,+msg,+propsheet wine ./Composer.exe >>log.txt 2>&1 ... 030c:Call KERNEL32.GetProcAddress(7bc20000,1409bf868 "wine_get_version") ret=140086b5d 030c:Ret KERNEL32.GetProcAddress() retval=7bc34dfc ret=140086b5d 030c:Call KERNEL32.GetProcAddress(7bc20000,1409bf850 "wine_get_build_id") ret=140086b70 030c:Ret KERNEL32.GetProcAddress() retval=7bc34e14 ret=140086b70 030c:Call KERNEL32.GetProcAddress(7bc20000,1409bf838 "wine_get_host_version") ret=140086b83 030c:Ret KERNEL32.GetProcAddress() retval=7bc34e2c ret=140086b83 030c:Call ntdll.wine_get_version() ret=140086ba3 030c:Ret ntdll.wine_get_version() retval=7f20492c8714 ret=140086ba3 030c:Call ntdll.wine_get_build_id() ret=140086ba9 030c:Ret ntdll.wine_get_build_id() retval=7f20492c8dc0 ret=140086ba9 030c:Call ntdll.wine_get_host_version(0607f358,0607f360) ret=140086bb8 030c:Ret ntdll.wine_get_host_version() retval=7f20492cce42 ret=140086bb8 ... --- snip ---
From a cursory view it uses the Wine detection for logging/diagnostic purpose
only but I might be wrong. I've seen vendors putting Wine-specific handling in their application code which in some cases makes things worse because Wine evolves as well. See bug 42497 for such example (broken 'user32.UpdateLayeredWindow' code paths).
Anyway, could you create a trace log using following command line and attach the resulting log file to this ticket? At the time of the "freeze" just kill the processes from another terminal using 'wineserver -k'.
--- snip --- # cd to app dir
$ WINEDEBUG=+seh,+relay,+win,+msg,+propsheet wine ./Composer.exe >>log.txt 2>&1 --- snip ---
You might need to compress the text file before attaching. Alternatively provide me with an external download link to the log (can be temporary).
I've created a snapshot via Internet Archive to "pin" the exact app version for reproducing the issue. Just in case the vendor replaces the download with a newer version (generated link / non-unique url).
https://web.archive.org/web/20200527180818/https://www.notation.com/Download...
$ sha1sum Inst_NS_Composer_4_English_Trial.msi 7828103c644f658faf0407c9e068efe85169afcb Inst_NS_Composer_4_English_Trial.msi
$ du -sh Inst_NS_Composer_4_English_Trial.msi 24M Inst_NS_Composer_4_English_Trial.msi
$ wine --version wine-5.9-67-g8257fe88fb
Regards
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #4 from Reinhold reinhold.hoffmann@hotmail.com --- Hi Anastasius,
Thanks you for your thorough investigation.
Please find the required log files at the temporary link https://www.notation.com/download/Wine/Logs/Wine_Bug_49260_Logs_from_OS_X_El...
I performed the logging on Mac OS X El Capitan with Wine 5.7 for the Scenario 1 (see above).
The zip folder contains:
(1) File name: log_No_freeze_WINEDEBUG=+seh+relay+win+msg+propsheet.txt.zip Notice: this file is huge, uncompressed 1.37 GB. for the command line $ WINEDEBUG=+seh,+relay,+win,+msg,+propsheet wine ./Composer.exe >>log.txt 2>&1 No freeze happens with this command.
(2) File name: log_freeze_WINEDEBUG=+msg.txt.zip $ WINEDEBUG=+msg wine ./Composer.exe >>log.txt 2>&1 The app freezes.
(3) File name: log_freeze_without_WINEDEBUF.txt.zip wine ./Composer.exe >>log.txt 2>&1 The app freezes.
For all other WINEDEBUG parameter combinations there is no freeze of the app. On Linux there is no freeze.
Thanks for performing a snapshot of the app because we need to replace that link by a solution asap.
Yes, our apps are Wine aware. We use the data for diagnosis and for workarounds or alternative solutions for the Wine bugs 46466, 48692, 48781, 46061 and for skipping some features of external libs which do not work on Wine but are outside of our responsibility.
Best regards,
Reinhold
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #5 from Reinhold reinhold.hoffmann@hotmail.com --- Just as an fyi, we give customers a starter app for Macs which currently uses WINEDEBUG=+seh to avoid the freezes. But this may cause other issues when the app is intensively used.
We have prepared the alternative use of CPropertySheet::Create instead of CPropertySheet::DoModal which has passed all intensive testing successfully.
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #6 from Anastasius Focht focht@gmx.net --- Hello Reinhold,
I can see the point when you pressed the 'Finish' button on page 2 (active_page=1). The property sheet, including child controls are getting destroyed in the process.
--- snip --- ... 006e:trace:win:WIN_CreateWindowEx "Assistent" #8002 ex=00010001 style=80c800c4 1,23 441x283 parent=0x20056 menu=0x0 inst=0x0 params=0x0 0071:Ret ntdll.RtlAllocateHeap() retval=1ad9ef30 ret=1408b2ce7 006e:trace:win:dump_window_styles style: WS_POPUP WS_CAPTION WS_SYSMENU 000000c4 0071:Call KERNEL32.HeapFree(07c90000,00000000,1ad9ef30) ret=1408b2d60 006e:trace:win:dump_window_styles exstyle: WS_EX_DLGMODALFRAME WS_EX_CONTROLPARENT ... 006e:trace:propsheet:PROPSHEET_CollectPageInfo Tab 2 L"Transpose Instrument Key (step 2 of 2)" 006e:trace:propsheet:PROPSHEET_PropertySheet startpage: 0 of 3 pages 006e:trace:propsheet:PROPSHEET_CreateDialog (000000001CF48A00) ... 006e:Call dialog proc 0x6e729900 (hwnd=0x70274,msg=WM_INITDIALOG,wp=00130258,lp=1cf48a00) 006e:trace:propsheet:PROPSHEET_DialogProc hwnd=0000000000070274 msg=0x0110 wparam=130258 lparam=1cf48a00 ... 006e:trace:msg:peek_message got type 7 msg 201 (WM_LBUTTONDOWN) hwnd 0x70274 wp 1 lp 0 ... 006e:trace:msg:peek_message got type 7 msg 202 (WM_LBUTTONUP) hwnd 0x30264 wp 0 lp 0 ... 006e:trace:propsheet:PROPSHEET_DialogProc hwnd=0000000000070274 msg=0x0111 wparam=3025 lparam=30264 006e:trace:propsheet:PROPSHEET_Finish active_page 1 ... 006e:trace:propsheet:PROPSHEET_Finish msg result 0 ... 006e:trace:propsheet:PROPSHEET_DialogProc hwnd=0000000000070274 msg=0x0002 wparam=0 lparam=0 006e:trace:propsheet:PROPSHEET_CleanUp 006e:trace:win:DestroyWindow (0x20294) 006e:trace:msg:WINPROC_CallProcWtoA (hwnd=0x70274,msg=WM_PARENTNOTIFY,wp=00000002,lp=00020294) 006e:trace:win:WIN_SetWindowLong 0x70274 0 0 W 006e:trace:propsheet:PROPSHEET_DialogProc hwnd=0000000000070274 msg=0x0210 wparam=2 lparam=20294 006e:trace:msg:WINPROC_CallProcWtoA (hwnd=0x20294,msg=WM_DESTROY,wp=00000000,lp=00000000) ... 006e:trace:msg:WINPROC_CallProcWtoA (hwnd=0x70274,msg=WM_NCDESTROY,wp=00000000,lp=00000000) 006e:trace:win:WIN_SetWindowLong 0x70274 0 0 W 006e:trace:propsheet:PROPSHEET_DialogProc hwnd=0000000000070274 msg=0x0082 wparam=0 lparam=0 ... 006e:trace:msg:PostMessageW hwnd 0x10020 msg 210 (WM_PARENTNOTIFY) wp 86 lp 20056 006e:Ret user32.SetActiveWindow() retval=00070274 ret=140746689 006e:Call user32.DestroyWindow(00070274) ret=14073295e 006e:trace:win:DestroyWindow (0x70274) ... 006e:Ret window proc 0x140733e68 (hwnd=0x70274,msg=WM_NCDESTROY,wp=00000000,lp=00000000) retval=00000000 006e:Call winemac.drv.DestroyWindow(00070274) ret=6aa8cd72 006e:Ret winemac.drv.DestroyWindow() retval=00000001 ret=6aa8cd72 006e:Ret user32.DestroyWindow() retval=00000001 ret=14073295e ... --- snip ---
Last part of main thread which pumps messages:
--- snip --- ... 006e:Ret window proc 0x14046b610 (hwnd=0x2004c,msg=WM_MDIGETACTIVE,wp=00000000,lp=00000000) retval=00050256 006e:Ret user32.SendMessageA() retval=00050256 ret=140756ab5 006e:Call user32.GetMenu(00020056) ret=14033b35e 006e:Ret user32.GetMenu() retval=00000000 ret=14033b35e 006e:Call KERNEL32.ActivateActCtx(072ca640,0607ee68) ret=140739724 006e:Call ntdll.RtlActivateActivationContext(00000000,072ca640,0607ee68) ret=7b02084b 006e:Ret ntdll.RtlActivateActivationContext() retval=00000000 ret=7b02084b 006e:Ret KERNEL32.ActivateActCtx() retval=00000001 ret=140739724 006e:Call user32.IsWindow(00020056) ret=14033dc41 006e:Ret user32.IsWindow() retval=00000001 ret=14033dc41 006e:Call user32.IsWindowEnabled(00020056) ret=14033dc4e 006e:Ret user32.IsWindowEnabled() retval=00000001 ret=14033dc4e 006e:Call user32.GetFocus() ret=14033de21 006e:Ret user32.GetFocus() retval=00000000 ret=14033de21 006e:Call KERNEL32.DeactivateActCtx(00000000,073b0350) ret=140738901 006e:Call ntdll.RtlDeactivateActivationContext(00000000,073b0350) ret=7b0209a2 006e:Ret ntdll.RtlDeactivateActivationContext() retval=00000001 ret=7b0209a2 006e:Ret KERNEL32.DeactivateActCtx() retval=00000001 ret=140738901 006e:Call KERNEL32.DeactivateActCtx(00000000,1cf33e10) ret=140738901 006e:Call ntdll.RtlDeactivateActivationContext(00000000,1cf33e10) ret=7b0209a2 006e:Ret ntdll.RtlDeactivateActivationContext() retval=00000001 ret=7b0209a2 006e:Ret KERNEL32.DeactivateActCtx() retval=00000001 ret=140738901 006e:Call user32.CallWindowProcA(140733e68,00020056,00000021,00020056,02010002) ret=14046b4fc 006e:Call window proc 0x140733e68 (hwnd=0x20056,msg=WM_MOUSEACTIVATE,wp=00020056,lp=02010002) 006e:Call user32.DefFrameProcA(00020056,0002004c,00000021,00020056,02010002) ret=140756964 006e:Ret user32.DefFrameProcA() retval=00000003 ret=140756964 006e:Ret window proc 0x140733e68 (hwnd=0x20056,msg=WM_MOUSEACTIVATE,wp=00020056,lp=02010002) retval=00000003 006e:Ret user32.CallWindowProcA() retval=00000003 ret=14046b4fc 006e:Call user32.IsWindow(00020056) ret=14046b508 006e:Ret user32.IsWindow() retval=00000001 ret=14046b508 006e:Call user32.IsWindow(00020056) ret=14046b59a 006e:Ret user32.IsWindow() retval=00000001 ret=14046b59a 006e:Call KERNEL32.DeactivateActCtx(00000000,0736b1b0) ret=140738901 006e:Call ntdll.RtlDeactivateActivationContext(00000000,0736b1b0) ret=7b0209a2 006e:Ret ntdll.RtlDeactivateActivationContext() retval=00000001 ret=7b0209a2 006e:Ret KERNEL32.DeactivateActCtx() retval=00000001 ret=140738901 006e:Call user32.IsWindow(00020056) ret=14046b6e9 006e:Ret user32.IsWindow() retval=00000001 ret=14046b6e9 006e:Ret window proc 0x14046b610 (hwnd=0x20056,msg=WM_MOUSEACTIVATE,wp=00020056,lp=02010002) retval=00000003 006e:Ret winemac.drv.MsgWaitForMultipleObjectsEx() retval=00000000 ret=6aaa15ed 006e:Call winemac.drv.MsgWaitForMultipleObjectsEx(00000001,0607f958,ffffffff,000004ff,7ffe00000000) ret=6aaa15ed 006e:Call ntdll.NtWaitForMultipleObjects(00000001,0607f4f0,00000001,00000000,00000000) ret=7b05b1b8 --- snip ---
Could be a focus loss issue but that's a shot in the dark.
So few more questions:
Did this ever work on Mac OS X? If yes:
- which Notation Composer version range - did you switch MSVC++/MFC versions in between - which Wine version range? 32-bit or 64-bit? - which Mac OS X version (before El Capitan)?
Do you have any Mac OS X specific code paths in the app related to user interface (MFC)?
What exactly do you mean by "freeze"? The app doesn't respond anymore to mouse clicks? What happens if you try to resize the window (bottom right corner), no redraw?
BTW did you change the default Windows version from 'Windows 7' to something else in the WINEPREFIX? Some trace log lines seem to indicate that. If yes, why.
Regards
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #7 from Reinhold reinhold.hoffmann@hotmail.com --- Created attachment 67279 --> https://bugs.winehq.org/attachment.cgi?id=67279 Screen shot of freeze of scenario 2
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #8 from Reinhold reinhold.hoffmann@hotmail.com --- Hi Anastasius,
Thanks, again.
Here are my answers:
Did this ever work on Mac OS X? If yes:
[Reinhold] Yes, we have been using Winebottler's solution since mid 2014 because at that time no official Wine binary for Mac was available by WineHQ.
- which Notation Composer version range
[Reinhold] With Composer 3 since 2014 using Winebottler's Mac solution which was based on Wine 1.7.37 at that time
- did you switch MSVC++/MFC versions in between
[Reinhold] No, same MSVC++/MFC version. Composer 3 is 32-bit, Composer 4 is 64-bit with the MFC libs in x64, of course.
- which Wine version range? 32-bit or 64-bit?
[Reinhold] Composer 3 - 32-bit from Wine 1.7.37 till Wine 2.0 using Winebottler's Wine solution. On Linux up to Wine 5.9 until today for testing. Composer 4 - 64-bit from Wine 4.0 onwards on Linux for testing and on Mac from Wine 5.0 till Wine 5.4 using our own compiled dmg package. The reason for an own dmg package is that Catalina only allows 64-bit. The official WineHQ pkg does not run on Catalina. Our own package simply includes the x64 binary from the WineHQ page (..-osx64.tar.gz) and customizes it for a simple usage by our customers. We have an installation guide available for dummmies. See https://www.notation.com/download/Installation-Guides/Mac-Notation-Installat.... But all of the logging here was done on El Capitan using the official pkg Wine 5.7 from the WineHQ page.
- which Mac OS X version (before El Capitan)?
[Reinhold] OS X Mavericks, Yosemite
Do you have any Mac OS X specific code paths in the app related to user interface (MFC)?
[Reinhold] No
What exactly do you mean by "freeze"? The app doesn't respond anymore to mouse clicks?
[Reinhold] Yes, with "freeze" I mean: Scenario 1 from this post: the mouse moves, the mouse icon is Composer's but no mouse click works. The (step 2 of 2) dialog cannot be finished nor cancelled. Scenario 2 from this post: please see the screen shot attached where the freeze happens in (step 4 of 5). The NEXT button from page (step 3 of 5) still stays pressed. The dialog content is only partly displayed. In both cases the wine64-preloader needs to be killed by the Mac Force Quit feature. Btw. Composer 3 (32-bit on El Capitan with Wine 5.7 from the WineHQ page) does not freeze in these scenarios.
What happens if you try to resize the window (bottom right corner), no redraw?
[Reinhold] The dialogs are not resizable.
BTW did you change the default Windows version from 'Windows 7' to something else in the WINEPREFIX? Some trace log lines seem to indicate that. If yes, why.
[Reinhold] No, I used the winecfg tool and changed Windows 7 to Windows 10
Regards
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #9 from Reinhold reinhold.hoffmann@hotmail.com --- In order to move forward and to have a quick solution we have changed the design of our software from CPropertySheet::DoModal to CPropertySheet::Create which does not show the freezing.
For any further investigation of the issue with CPropertySheet::DoModal please use the archived version saved by Anastasius (see link).
Again, thanks for the support.
Reinhold
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #10 from Nikolay Sivov bunglehead@gmail.com --- I don't know if it's feasible, but to rule out mac-specific window management issues, you could try to run with winex11 driver + xquartz. It used to work before, not sure how hard it would be to get it running on current macos releases.
https://bugs.winehq.org/show_bug.cgi?id=49260
--- Comment #11 from Reinhold reinhold.hoffmann@hotmail.com --- Nikolay,
Thanks for the hint. We may come back to it.
It looks that replacing CPropüertySheet::DoModal by CPropertySheet::Create (+ according enhancements in the app software to handle non-modal dialogs) works fine. We went ahead with this "workaround" solution.
Reinhold
https://bugs.winehq.org/show_bug.cgi?id=49260
Reinhold reinhold.hoffmann@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Hardware|x86 |x86-64 Version|5.9 |5.7