[Bug 39938] New: winedbg reports wrong values of input parameter for functions with DECLSPEC_HOTPATCH attribute

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Jan 6 04:52:17 CST 2016


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

            Bug ID: 39938
           Summary: winedbg reports wrong values of input parameter for
                    functions with DECLSPEC_HOTPATCH attribute
           Product: Wine
           Version: 1.9.0
          Hardware: x86
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: winedbg
          Assignee: wine-bugs at winehq.org
          Reporter: andrej.skvortzov at gmail.com
      Distribution: ---

Created attachment 53350
  --> https://bugs.winehq.org/attachment.cgi?id=53350
test executable with source code

Steps to reproduce the problem:

1. run winedbg with attached example ca
2. set breakpoint to the function with DECLSPEC_HOTPATCH attribute (for example
CreateProcessA). Select function in the wine source code, not the kernel32
entry point.
3. continue execution of the program in winedbg
4. when breakpoint is hit, show local variables using 'info locals' command.
Notice wrong value of app_name and cmd_line input parameters.

I attached binary with source code and log of the winedbg session, that shows
this problem.

Short summary:
if attribute DECLSPEC_HOTPATCH is specified, then compiler generate this
prologue:

movl  %edi,%edi
pushl %ebp                                                                   
movl  %esp,%ebp

That is used for hotpatching since Windows XP. The breakpoint is set just after
this prologue (see attached winedbg log). The prologue modifies stack by
pushing ebp, but winedbg assumes that breakpoint is set before prologue and
stack is not modified. Therefore all parameters displayed by winedbg have wrong
addresses (shifted on size of ebp) and as result wrong values.

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