[OpenJDK 2D-Dev] [10] RFR: JDK-8188083- NPE in java.awt.image.FilteredImageSource.startProduction

Prahalad Kumar Narayanan prahalad.kumar.narayanan at oracle.com
Thu Oct 26 06:58:40 UTC 2017

Hello Sergey

Thank you for the suggestion.

I 've updated JBS with below information.
   1 . Stack trace information as provided by submitter- 
            at java.awt.image.FilteredImageSource.startProduction(FilteredImageSource.java:181) 
            at java.awt.image.FilteredImageSource.startProduction(FilteredImageSource.java:183) 
            at sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:732) 
            at sun.awt.image.ToolkitImage.addWatcher(ToolkitImage.java:221) 
    2. Screenshot showing the occurrence of the exception at FilteredImageSource.java: 181. 
            . The image also shows the test passing with JDK10 containing the fix on VM running Linux Ubuntu x64.

Thank you
Have a good day

Prahalad N.

-----Original Message-----
From: Sergey Bylokhov 
Sent: Thursday, October 26, 2017 12:05 PM
To: Prahalad Kumar Narayanan; 2d-dev
Subject: Re: [OpenJDK 2D-Dev] [10] RFR: JDK-8188083- NPE in java.awt.image.FilteredImageSource.startProduction

Hi, Prahalad.
Can you please add a stack trace which include a line numbers to the bug report? Currently it is unclear in what line an exception is occurred.

On 25/10/2017 21:07, Prahalad Kumar Narayanan wrote:
> Hello Everyone
> Good day to you.
> Kindly review a fix for the bug
>      Bug ID: JDK-8188083
>      Description: Null Pointer Exception in 
> java.awt.image.FilteredImageSource.startProduction
> Root Cause
>      . FilteredImageSource implements ImageProducer interface
>      . All the methods of FilteredImageSource operate on a common data -HashTable, but only a few are synchronized methods.
>      . Thus, when synchronized & un-synchronized methods access / modify the hash table in a multi-threaded scenario, it renders the class vulnerable to this exception.
> Exception occurrence
>      . The submitter has mentioned that there is no test-case to reproduce to this issue.
>      . Luckily I was able to observe this issue with a "crude" test code
>            . The test triggered 7k threads in an ExecutorService randomly adding/ removing/ invoking startProduction on FilteredImageSource object.
>            . I didn't feel it robust enough to be added as a part of regression tests. I tried optimizing the test but in vain.
>            . Hence the test code isn't added to the webrev.
> Details on the Fix:
>      . The concerned methods have been "synchronized" in the fix.
>      . No new regression failures were observed with this change.
> Kindly review the change and provide your feedback.
> In addition, kindly suggest whether this requires CSR as it adds "synchronized" to method signature.
> Review Link: http://cr.openjdk.java.net/~pnarayanan/8188083/webrev.00/
> Thank you for your time in review
> Have a good day
> Prahalad N.

Best regards, Sergey.

More information about the 2d-dev mailing list