Hello. Please review the fix for JDK 14. Bug: https://bugs.openjdk.java.net/browse/JDK-8235620 Fix: http://cr.openjdk.java.net/~serb/8235620/webrev.00
I have found this bug during the hunt for the reason of why our disposing machinery is so slow. In the sun.lwawt.macosx.CPlatformWindow both fixes changed initialize() method, pseudo diff: JDK-8006406: public void initialize() { + initializeBase(_target, _peer, _owner, new CPlatformView()); - contentView = new CPlatformView(); contentView.initialize(peer, responder); } JDK-8003559: public void initialize() { - contentView = new CPlatformView(); + contentView = createContentView(); contentView.initialize(peer, responder); Resulted merge: + initializeBase(_target, _peer, _owner, new CPlatformView()); - contentView = new CPlatformView() + contentView = createContentView(); contentView.initialize(peer, responder); Note that now we create CPlatformView twice. It could be not a big issue (one more object to allocated), but it has one unexpected problem. CPlatformView is a CFRetainedResource, which calls CPlatformView.dispose() during finalization, which tried to call windowLayer.dispose(); But since we did not call contentView.initialize() on the first CPlatformView its layer is null-> this cause an NPE on the finalization thread, which eventually slow down our disposal machinery. -- Best regards, Sergey.