[OpenJDK 2D-Dev] Integrated: 6847157: java.lang.NullPointerException: HDC for component at sun.java2d.loops.Blit.Blit

Sergey Bylokhov serb at openjdk.java.net
Mon Nov 9 06:39:59 UTC 2020

On Mon, 26 Oct 2020 19:45:49 GMT, Sergey Bylokhov <serb at 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 <serb at 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

More information about the 2d-dev mailing list