[Bug 43733] max 7 page fault when showing drop-down

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Nov 17 19:48:53 CST 2017


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

Zebediah Figura <z.figura12 at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |z.figura12 at gmail.com

--- Comment #3 from Zebediah Figura <z.figura12 at gmail.com> ---
In true Fochtian style.

The game crashes at 0x4c288f:

  4c2889:    ff 15 c8 aa c1 00        call   *0xc1aac8
  4c288f:    5f                       pop    %edi

And if we look for this address, we find:

  4c230a:    e8 b1 e2 ff ff           call   0x4c05c0
  4c230f:    84 c0                    test   %al,%al
  4c2311:    75 27                    jne    0x4c233a
  4c2313:    68 08 e1 a9 00           push   $0xa9e108
  4c2318:    ff 15 f8 32 99 00        call   *0x9932f8
  4c231e:    68 20 e1 a9 00           push   $0xa9e120
  4c2323:    50                       push   %eax
  4c2324:    ff 15 5c 33 99 00        call   *0x99335c
  4c232a:    8b c8                    mov    %eax,%ecx
  4c232c:    33 c0                    xor    %eax,%eax
  4c232e:    85 c9                    test   %ecx,%ecx
  4c2330:    89 0d c8 aa c1 00        mov    %ecx,0xc1aac8

i.e.

    if (!4c05c0())
        pUpdateLayeredWindow = GetProcAddress(GetModuleHandle(L"user32.dll"),
"UpdateLayeredWindow")

And that function is:

  4c05c4:    8d 45 fc                 lea    -0x4(%ebp),%eax
  4c05c7:    50                       push   %eax
  4c05c8:    68 19 00 02 00           push   $0x20019
  4c05cd:    6a 00                    push   $0x0
  4c05cf:    68 f4 df a9 00           push   $0xa9dff4
  4c05d4:    68 01 00 00 80           push   $0x80000001
  4c05d9:    ff 15 0c 30 99 00        call   *0x99300c
  4c05df:    85 c0                    test   %eax,%eax
  4c05e1:    75 0f                    jne    0x4c05f2
  4c05e3:    ff 75 fc                 pushl  -0x4(%ebp)
  4c05e6:    ff 15 00 30 99 00        call   *0x993000
  4c05ec:    b0 01                    mov    $0x1,%al
  4c05ee:    8b e5                    mov    %ebp,%esp
  4c05f0:    5d                       pop    %ebp
  4c05f1:    c3                       ret    
  4c05f2:    32 c0                    xor    %al,%al

i.e.

    if (!RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Wine", 0, KEY_READ,
&hkey))
    {
        RegCloseKey(hkey);
        return 1;
    }
    return 0;


To summarize: The application is Wine-aware. I suspect it was trying to work
around some bug in UpdateLayeredWindow(), but then some part of that code path
broke.

It's not really obvious what this code path is, if there is one.

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