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