On Tue, 4 Nov 2025 09:06:41 GMT, Prasanta Sadhukhan <[email protected]> 
wrote:

> It is seen that when we close the SwingNode window while we have registered a 
> WINDOW_HIDDEN listener, it will cause a NPE 
> This is because WINDOW_HIDDEN listener called 
> `SwingNode.overrideNativeWindowHandle` to provide a native FX window handle 
> to AWT/Swing via JNI code, which gives provision to AWT/Swing code in 
> sun/swing/JLightweightFrame.java#overrideNativeWindowHandle to handle the 
> window closing
> 
> https://github.com/openjdk/jdk/blob/e4aed95cac343f1339b9bc87721561bdc4c2f5ad/src/java.desktop/share/classes/sun/swing/JLightweightFrame.java#L527-L534
> 
> But if window is closed, then the node is removed from scene and 
> `SwingNode.disposeLwFrame` is called which nulls "lwFrame" which is the 
> handle for JLightweightFrame AWT frame, so when JNI code 
> https://github.com/openjdk/jfx/blob/c77c2335856a967907aaacc9546f44943c069add/modules/javafx.graphics/src/main/native-prism/SwingInterop.c#L47
> 
> tries to call JLightweightFrame, it crashes.
> Fix is made to check for `lwFrame `before `overrideNativeWindowHandle ` is 
> called inside `SwingNodeHelper.runOnEDT`. 
> This is common practice employed inside `SwingNodeHelper.runOnEDT` to check 
> for lwFrame to be not null

This pull request has now been integrated.

Changeset: c9b74a80
Author:    Prasanta Sadhukhan <[email protected]>
URL:       
https://git.openjdk.org/jfx/commit/c9b74a80e76c03b0a3df698e6ba5c1ea239b32ad
Stats:     104 lines in 2 files changed: 101 ins; 0 del; 3 mod

8371128: NullPointerException occurs due to double cleanup of SwingNode

Reviewed-by: kcr

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

PR: https://git.openjdk.org/jfx/pull/1960

Reply via email to