Hi, Dmitry.

On 11.08.2020 01:07, Dmitry Markov wrote:
Problem description:
The root cause of the crash is the lack of synchronisation in imjpapi.dll. In 
particular when IME messages are processed in the message loop and another 
message triggered through a SendMessage() call, this clears the buffer context 
so on further processing the message loop in IME context will point to invalid 
memory buffer. Microsoft article devoted to this issue: 
https://docs.microsoft.com/en-us/troubleshoot/windows/win32/ime-crash-processing-cross-thread-sent-message

The documentation above also states that PeekMessage, called by the 
TranslateMessage when the IME is ON, can proceed the posted messages as well if 
that true then the current fix does not help.

Fix:
Replace SendMessage() with PostMessage() for IME messages and implement event 
based mechanism to notify the sender that the message processing is completed.

What exact message broke the IME, the "WM_AWT_DESTROYCONTEXT"?


Testing:
mach5 client tests (jtreg headful, jck, etc.) are green.

Regards,
Dmitry


--
Best regards, Sergey.

Reply via email to