[Bug 52157] ntdll:wow64 fails on 64-bit Wine

WineHQ Bugzilla wine-bugs at winehq.org
Mon Dec 6 11:34:11 CST 2021


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

Bernhard Übelacker <bernhardu at mailbox.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bernhardu at mailbox.org

--- Comment #1 from Bernhard Übelacker <bernhardu at mailbox.org> ---
It looks like the call to DbgUiIssueRemoteBreakin expects the
target process to be of the same bitness as itself.

It tries to create a thread in the 32-bit process with
the address of the 64-bit function DbgUiRemoteBreakin.

This pointer get truncated the the func variable, therefore the check in
invoke_system_apc fails and returns STATUS_INVALID_PARAMETER.

dlls/ntdll/unix/server.c:541
        if (reserve == call->create_thread.reserve && commit == ... &&
            (ULONG_PTR)func == call->create_thread.func && ...)


But I am not completely sure because that way the test
shouldn't have succeeded before?


# ntdll_test.exe wow64
(rr) print/x call->create_thread
$47 = {type = 0xc, flags = 0x0, func = 0x170043270, arg = 0x0, zero_bits = 0x0,
reserve = 0x0, commit = 0x0}
(rr) print DbgUiRemoteBreakin
$48 = {void (void *)} 0x170043270 <DbgUiRemoteBreakin>


# C:\windows\syswow64\notepad.exe
(rr) print/x call->create_thread
$22 = {type = 0xc, flags = 0x0, func = 0x170043270, arg = 0x0, zero_bits = 0x0,
reserve = 0x0, commit = 0x0}
(rr) print func
$23 = (void *) 0x70043270

# 0x7bc412e1 in DbgUiRemoteBreakin at 4

-- 
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