[Bug 50171] 32-bit PE entry point no longer called through BaseThreadInitThunk() assembly wrapper when Wine is built with LLVM MinGW

WineHQ Bugzilla wine-bugs at winehq.org
Mon Nov 23 17:47:26 CST 2020


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
      Fixed by SHA1|                            |d896b1195d876085f7127accd44
                   |                            |5c3ecd504da3f
         Resolution|---                         |FIXED

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

this is fixed by commit
https://source.winehq.org/git/wine.git/commitdiff/d896b1195d876085f7127accd445c3ecd504da3f
("kernel32: Implement BaseThreadInitThunk in assembly also for PE builds.").

Thanks Alexandre

After the fix:

--- snip ---
$ wine --version
wine-5.22-39-g4807a8f588c

$ winedbg "c:\\windows\\syswow64\\notepad.exe"

Wine-dbg>b mainCRTStartup
Breakpoint 1 at 0x0000000000405280 mainCRTStartup in notepad

Wine-dbg>c

Stopped on breakpoint 1 at 0x0000000000405280 mainCRTStartup in notepad

Wine-dbg>x $esp
 7b624240

Wine-dbg>disas 0x7b624240-0x10

# caller is BaseThreadInitThunk assembly wrapper 

0x000000007b624230 WriteTapemark+0xa0 in kernel32: pushl        %ebp
0x000000007b624231 WriteTapemark+0xa1 in kernel32: movl %esp,%ebp
0x000000007b624233 WriteTapemark+0xa3 in kernel32: pushl        %ebx
0x000000007b624234 WriteTapemark+0xa4 in kernel32: movl 0x8(%ebp),%ebx
0x000000007b624237 WriteTapemark+0xa7 in kernel32: pushl        0x4(%ebp)
0x000000007b62423a WriteTapemark+0xaa in kernel32: pushl        0x4(%ebp)
0x000000007b62423d WriteTapemark+0xad in kernel32: pushl        %ebx
0x000000007b62423e WriteTapemark+0xae in kernel32: call *%edx
0x000000007b624240 WriteTapemark+0xb0 in kernel32: movl %eax,0x0(%esp)
0x000000007b624243 WriteTapemark+0xb3 in kernel32: call 0x000000007b628c77
_RtlExitUserThread at 4 in kernel32
--- snip ---

Before the fix:

--- snip ---
$ export PATH=/home/focht/projects/wine/mainline-install-5.22-x86_64/bin:$PATH
$ wine --version
wine-5.22

Wine-dbg>b mainCRTStartup
Breakpoint 1 at 0x0000000000405280 mainCRTStartup in notepad

Wine-dbg>c

Stopped on breakpoint 1 at 0x0000000000405280 mainCRTStartup in notepad

Wine-dbg>x $esp
 7b624258

Wine-dbg>disas 0x7b624258-0x8

0x000000007b624250 BaseThreadInitThunk in kernel32: pushl       %ebp
0x000000007b624251 BaseThreadInitThunk+0x1 in kernel32: movl    %esp,%ebp
0x000000007b624253 BaseThreadInitThunk+0x3 in kernel32: pushl   0x8(%ebp)
0x000000007b624256 BaseThreadInitThunk+0x6 in kernel32: call    *%edx
0x000000007b624258 BaseThreadInitThunk+0x8 in kernel32: pushl   %eax
0x000000007b624259 BaseThreadInitThunk+0x9 in kernel32: call    *0x7b639968 ->
(invalid destination)
0x000000007b62425f BaseThreadInitThunk+0xf in kernel32: nop
--- snip ---

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