On Mon, 18 Dec 2023 19:15:03 GMT, Martin Fox <m...@openjdk.org> wrote:

>> While processing a key down event the Glass GTK code sends out PRESSED and 
>> TYPED KeyEvents back to back. If the stage is closed during the PRESSED 
>> event the code will end up referencing freed memory while sending out the 
>> TYPED event. This can lead to intermittent crashes.
>> 
>> In GlassApplication.cpp the EventCounterHelper object ensures the 
>> WindowContext isn't deleted while processing an event. Currently the helper 
>> object is being created *after* IME handling instead of before. If the IME 
>> is enabled it's possible for the WindowContext to be deleted in the middle 
>> of executing a number of keyboard-related events.
>> 
>> The fix is simple; instantiate the EventCounterHelper object earlier. There 
>> isn't always a WindowContext so I tweaked the EventCounterHelper to do 
>> nothing if the context is null.
>> 
>> To make the crash more reproducible I altered the WindowContext such that 
>> when it's deleted the freed memory is filled with 0xCC. This made the crash 
>> more reproducible and allowed me to test the fix. I did the same with 
>> GlassView since that's the only other Glass GTK class that's instantiated 
>> with `new` and discarded with `delete`.
>
> Martin Fox has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Consistent use of FILL in mem debug code.

It's always failing on my machine - I'll check why.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1307#issuecomment-1868408809

Reply via email to