[Bug 31442] Guild Wars 2 freezes on text input fields

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Oct 8 03:53:58 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=31442

--- Comment #41 from voidcastr <voidcastr at gmail.com> 2012-10-08 03:53:58 CDT ---

(In reply to comment #40)
> I expect a thread problem...

Oh, that's quite for sure.

Well, apparently the lower SendMessageW is not handled properly under certain
circumstances like the one being at hand here. Exchanging SendMessageW with
SendNotifyMessageW would only obscure the actual problem that avoids the proper
handling of the message. We should solve that instead.


I just investigated the message sending a little further:

As we know,
    SendMessageW(...)
in dlls/user32/message.c is employed by the imm32 code in question. It calls
    send_message(struct send_message_info*, DWORD_PTR *, BOOL)
which hangs at
    ret = send_inter_thread_message( info, &result );
in the "else" case at the end of the function.

This is because send_inter_thread_message(...) hangs at
    wait_message_reply( info->flags );
because wait_message_reply(...) hangs at
    wow_handlers.wait_message( 1, &server_queue, INFINITE, QS_SENDMESSAGE, 0 );
which refers to
    wait_message( DWORD, CONST HANDLE*, DWORD, DWORD, DWORD)
in dlls/user32/winproc.c, which in turn hangs at
    ret = USER_Driver->pMsgWaitForMultipleObjectsEx( count, handles, timeout,
mask, flags );.

>From here, I kind of lose track of what's happening exactly. What I know for
sure is that
    X11DRV_MsgWaitForMultipleObjectsEx(DWORD, const HANDLE*, DWORD, DWORD,
DWORD)
in dlls/winex11.drv/event.c gets called over and over again, once every 5
seconds. The first time it returns calling WaitForMultipleObjectsEx under the
"if (!data)" condition. Any subsequent call ends at the above "return
WAIT_TIMEOUT;".


So, Henri, you already expected something related to
WaitForMultipleObjects[Ex]... however this one was hard to find since there is
no TRACE in the method. Seems like we're now deep into message handling and
this has only little to nothing to do with wine's d3d implementation... How do
we proceed from here?

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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