On Mon, 26 Oct 2020 19:45:49 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

> This is the fix for one suspicious exception which rarely but time to time 
> occurred on the test systems. As described in a few bug reports the use-cases 
> could be quite different, but I was able to reproduce it in one of them.
> 
> Steps to reproduce:
>  1. We draw to the frame for the first time or we draw to the frame on the 
> thread where we never draw before
>  2. As part of step 1. we start initialization of the surface data bounded to 
> this frame for that thread, in the native method
>  3. jtreg decided to kill the test because the main method ends
>  4. As part of step 2. we request HDC for the frame via sendMessage which do 
> nothing since AWT is stopping/dies -> HDC=NULL
>  5. As part of step 1. we try to draw to the surface -> HDC is NULL -> NPE is 
> thrown
> 
> The solution is to mark the surface at step 4. as invalid:
>  - If the AWT will die this surface will never be used and no exception occurs
>  - If the application will continue to work and this surface will be accessed 
> then we will throw InvalidPipeException in attempts to recreate the surface 
> and all related data.

This pull request has now been integrated.

Changeset: 2d6c28db
Author:    Sergey Bylokhov <s...@openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/2d6c28db
Stats:     94 lines in 2 files changed: 93 ins; 0 del; 1 mod

6847157: java.lang.NullPointerException: HDC for component at 
sun.java2d.loops.Blit.Blit

Reviewed-by: prr

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

PR: https://git.openjdk.java.net/jdk/pull/870

Reply via email to