<AWT Dev> [16] RFR 8232114: JVM crashed at imjpapi.dll in native code

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Wed Aug 12 05:16:53 UTC 2020

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.

More information about the awt-dev mailing list