RFR: 8223296: NullPointerException in GlassScene.java at line 325

Kevin Rushforth kcr at openjdk.java.net
Tue Dec 10 16:27:26 UTC 2019


On Tue, 10 Dec 2019 07:00:50 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:

> Issue: NPE in GlassScene.frameRendered().
> 
> Cause: scenePaintListener is set in setTKScenePaintListener(), used in frameRendered() and 
> set to null in dispose().
> setTKScenePaintListener() and dispose() are called on JavaFX Application Thread and 
> frameRendered() is called by QuantumRenderer thread.
> setTKScenePaintListener() and frameRendered() are synchronized but dispose() is not.
> 
> Fix:
> dispose() should use the synchronized setTKScenePaintListener() to set scenePaintListener to null.
> 
> Verification:
> This is a very rare issue and cannot be reliably reproduced with a test case.

The change looks OK as far as it goes, meaning that it will fix the specific NPE reported by the bug and is looks like a safe fix.

Two questions:

1. In addition to calling the synchronized `setTKScenePaintListener` method, you moved the call to the beginning of `dispose`. Is there a reason you needed to do this?
2. Do any of the other listeners or variables that are set in `dispose` have the same problem (i.e., are any the rest accessed from another thread)?

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



PR: https://git.openjdk.java.net/jfx/pull/64


More information about the openjfx-dev mailing list