[Bug 50189] Multiple 64-bit applications crash with Wine MinGW PE build due to violation of Windows 64-bit ABI (RSP must be 16-byte aligned when making a call to Win64 API)

WineHQ Bugzilla wine-bugs at winehq.org
Fri Nov 27 07:29:08 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=50189

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
      Fixed by SHA1|                            |5a0c9270b1225da86782bffd9eb
                   |                            |798a39723d70f

--- Comment #1 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

this is fixed by commit
https://source.winehq.org/git/wine.git/commitdiff/5a0c9270b1225da86782bffd9eb798a39723d70f
("include: Force aligning stack pointer also for Mingw builds.").

Thanks Alexandre

--- snip ---
$ wine net start hardlock
...
The hardlock service is starting.
00e0:fixme:ntoskrnl:IoGetConfigurationInformation partial stub
00e0:fixme:ntoskrnl:IoRegisterPlugPlayNotification (2 1 0000000000D9B3D0
00000000000197A0 0000000000DAADD0 000000000001A590 0000000000DA1788) stub
00e0:fixme:ntoskrnl:IoRegisterPlugPlayNotification (2 1 0000000000D9B3B0
00000000000197A0 0000000000DAAEC0 000000000001A590 0000000000DA1790) stub
00e0:fixme:ntoskrnl:IoRegisterPlugPlayNotification (2 1 0000000000D9B830
00000000000197A0 0000000000D9A430 000000000001A590 0000000000DA19A0) stub
The hardlock service was started successfully.
--- snip ---

Stack align on 16-byte boundary with Wine MinGW PE build:

<ntoskrnl.MmIsAddressValid>

--- snip ---
0000000180013CD0 | push rbp                                      
0000000180013CD1 | push rsi                                      
0000000180013CD2 | sub rsp,28                                    
0000000180013CD6 | lea rbp,qword ptr ss:[rsp+20]                 
0000000180013CDB | and rsp,FFFFFFFFFFFFFFF0                      
0000000180013CDF | mov rsi,rcx                                   
0000000180013CE2 | test byte ptr ds:[<__wine_dbch_ntoskrnl>],8   
0000000180013CE9 | je ntoskrnl.180013D0F                         
0000000180013CEB | mov qword ptr ss:[rsp+20],rsi                 
0000000180013CF0 | lea rdx,qword ptr ds:[<__wine_dbch_ntoskrnl>] 
0000000180013CF7 | lea r8,qword ptr ds:[180025230]               
0000000180013CFE | lea r9,qword ptr ds:[18002483A]               
0000000180013D05 | mov ecx,3                                     
0000000180013D0A | call <ntoskrnl.wine_dbg_log>                  
0000000180013D0F | mov edx,1                                     
0000000180013D14 | mov rcx,rsi                                   
0000000180013D17 | call qword ptr ds:[<&IsBadReadPtr>]           
0000000180013D1D | test eax,eax                                  
0000000180013D1F | sete al                                       
0000000180013D22 | lea rsp,qword ptr ss:[rbp+8]                  
0000000180013D26 | pop rsi                                       
0000000180013D27 | pop rbp                                       
0000000180013D28 | ret                                           
--- snip ---

--- snip ---
000000007B62C0D0 | push rbp                                          
000000007B62C0D1 | push r15                                          
000000007B62C0D3 | push r14                                          
000000007B62C0D5 | push rsi                                          
000000007B62C0D6 | push rdi                                          
000000007B62C0D7 | push rbx                                          
000000007B62C0D8 | sub rsp,168                                       
000000007B62C0DF | lea rbp,qword ptr ss:[rsp+80]                     
000000007B62C0E7 | and rsp,FFFFFFFFFFFFFFF0                          
000000007B62C0EB | xor r14d,r14d                                     
000000007B62C0EE | test rdx,rdx                                      
000000007B62C0F1 | je kernel32.7B62C1BF                              
000000007B62C0F7 | mov rsi,rcx                                       
000000007B62C0FA | mov r15d,1                                        
000000007B62C100 | test rcx,rcx                                      
000000007B62C103 | je kernel32.7B62C159                              
000000007B62C105 | mov rdi,rdx                                       
000000007B62C108 | lea rax,qword ptr ds:[<__wine_exception_handler>] 
000000007B62C10F | mov qword ptr ss:[rsp+38],rax                     
000000007B62C114 | lea rax,qword ptr ds:[<badptr_handler>]           
000000007B62C11B | mov qword ptr ss:[rsp+40],rax                     
000000007B62C120 | lea rcx,qword ptr ss:[rsp+50]                     
000000007B62C125 | lea rbx,qword ptr ss:[rsp+30]                     
000000007B62C12A | mov rdx,rbx                                       
000000007B62C12D | call <kernel32.__wine_setjmpex>                   
...
--- snip ---

$ wine --version
wine-5.22-153-g9faa5eeddd2

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list