apache / netbeans

Apache NetBeans
https://netbeans.apache.org/
Apache License 2.0
2.62k stars 840 forks source link

Netbeans 22 crashes on MAC (14.5) #7560

Closed ChMThiel closed 1 month ago

ChMThiel commented 1 month ago

Apache NetBeans version

Apache NetBeans 22

What happened

see discussion in https://github.com/apache/netbeans/issues/6647

Language / Project Type / NetBeans Component

No response

How to reproduce

https://github.com/apache/netbeans/issues/6647

Did this work correctly in an earlier version?

No / Don't know

Operating System

Mac Sonoma 14.5

JDK

22.0.1

Apache NetBeans packaging

Other

Anything else

No response

Are you willing to submit a pull request?

No

mbien commented 1 month ago

please add JDK ~version~ vendor, a crash dump/log and some info about the last few things you did with NetBeans before it happened.

ChMThiel commented 1 month ago

As mentioned in the linked discussion, i'm not able to give you a crash dump or log becaus nothing is written... It seem the worse, the more projects are open. And Netbeans seems to aquire a lot of memory before the crash.

Product Version: Apache NetBeans IDE 22 Java: 22.0.1; OpenJDK 64-Bit Server VM 22.0.1 Runtime: OpenJDK Runtime Environment 22.0.1 (installed by Homebrew)

System: Mac OS X version 14.5 running on aarch64; UTF-8; de_DE (nb)

mbien commented 1 month ago

the JVM should leave a crash dump on the same drive the process was started from (or home folder). I am not sure if mac behaves differently, but there should be a crash file somewhere. Running NB from shell might also reveal a few additional log lines.

FlatLAF had a mac specific regression in 3.4 but we still use 3.3 so that can't be the cause https://github.com/JFormDesigner/FlatLaf/issues/826 To exclude FlatLAF, someone could test with bin/netbeans --laf Metal

To exclude that this is specific to homebrew packages, please check if this also happens with the community installers which bundle a JDK runtime which is only visible to NB.

dyorgio commented 1 month ago

Hi @mbien, thank you very much!

It is probably the case... I see a lot of component peers opened when process crash (only crash GUI, java process stay alive and need to be killed manually).

also, macOS topbar was corrupted every time then NetBeans crash:

Captura de Tela 2024-07-10 às 15 43 47

And only returns to normal after restart...

I will change LAF and report here if it stops to crash (to me it is a daily routine).

There is someway to manually update FlatLAF in my NetBeans 22?

ChMThiel commented 1 month ago

@mbien I tried your suggestion and switched preferred Look & Fell from FlatLaf-Dark to Mac Os-X. Memory-Consumption is a lot less (was about 6-8GB with FlatLaf, with Mac Os-X i'ts between 1.5-3GB) and up to now no more crashes 👍

mbien commented 1 month ago

There is someway to manually update FlatLAF in my NetBeans 22?

wouldn't bother to try to to patch a NB release, I opened an update PR https://github.com/apache/netbeans/pull/7565

here is a dev buld: https://github.com/apache/netbeans/actions/runs/9911652425/artifacts/1696152788 (expires in 7 days)

dyorgio commented 1 month ago

@mbien Sadly FlatLaf 3.4.1 appears to crash too... I just downloaded flatLaf demo (3.4.1) and in some seconds, with a frozen popup on theme list, WindowServer was crashed (like NetBeans 22 with FlatLaf 3.3 does).

WindowServer log:

Crashed Thread:        Unknown

Exception Type:        

Termination Reason:    Namespace WATCHDOG, Code 1 monitoring timed out for service
(1 monitored services unresponsive): checkin with service: WindowServer (0 induced crashes) returned not alive with context:
is_alive_func returned unhealthy : 0x1|765949:63984:1|04000000:04064200:04000000
40 seconds since last successful checkin, 2599 total successful checkins since 28554 seconds ago, has not exited since first loaded
mbien commented 1 month ago

@dyorgio interesting. Thats on latest zulu 21 and Sonoma 14.5 (https://github.com/apache/netbeans/issues/6647#issuecomment-2195584964)?

cc @DevCharly

neilcsmith-net commented 1 month ago

@dyorgio if you're testing the FlatLaf demo, could you try disabling the native library via the system property and see if that's affecting this? https://www.formdev.com/flatlaf/system-properties/#:~:text=menuBarEmbedded%20.&text=Specifies%20whether%20FlatLaf%20native%20library,depend%20on%20the%20native%20library.

dyorgio commented 1 month ago

@mbien yes, I could reproduce it every time in few seconds using latest zulu 21 and Sonoma 14.5

And stops if I disable native with this way:

java -Dflatlaf.useNativeLibrary=false -jar flatlaf-demo-3.4.1.jar
neilcsmith-net commented 1 month ago

Thanks @dyorgio - good to know! Please find the location of the NetBeans userdir (see About window if you're unsure). Find etc/netbeans.conf inside the app bundle and copy it to <userdir>/etc/netbeans.conf. At the beginning of the default options add -J-Dflatlaf.useNativeLibrary=false. Then restart NetBeans. Check the IDE log to make sure that change is picked up.

Does this stop the crash from happening?

dyorgio commented 1 month ago

@neilcsmith-net Yes, no more crashes...

How I said in another issue, to me appears to be something relative with popups and menus.

Without native library popups now are squares, with native it was rounded,

DevCharly commented 1 month ago

Just updated a mac mini M1 to macOS 14.5 to test this issue. Latest FlatLaf Demo works without problems for me. Tried Zulu 22.0.1 and some older JDKs (21, 11, 8; no homebrew!)

I wonder what's different on my Mac 😕

Sadly FlatLaf 3.4.1 appears to crash too... I just downloaded flatLaf demo (3.4.1) and in some seconds, with a frozen popup on theme list

@dyorgio if I understand you correctly, the FlatLaf Demo starts normally, and works (e.g. you can enter some text into a text field), but when first popup is shown, then it freezes, right? Or does the Java process crash/terminate? Does macOS show some "AppXYZ quit unexpectedly" dialog?

If the Java process crashes, there should be a file hs_err_pid*.log (where * is replaced with the process ID) in working directory (e.g. current directory if you start FlatLaf Demo from command line).

How I said in another issue, to me appears to be something relative with popups and menus.

Understood. FlatLaf uses some native code to for the rounded popups. The code is the same as used in JetBrains JREs. There were no recent changes to that JetBrains code and I can't find any issue in their issue tracker.

At the moment I've no idea what's wrong...

DevCharly commented 1 month ago

@dyorgio @ChMThiel I've added some NSLog() calls to the code that sets the rounded popup border in FlatLaf. Would you be so kind and run java -jar flatlaf-demo/build/libs/flatlaf-demo-3.5-SNAPSHOT.jar from this build artifact.

Then move mouse over themes list (on right side) and wait until a tooltip is shown. This should output some messages to Terminal (and freeze/crash FlatLaf Demo). Please post output here. Thanks.

ChMThiel commented 1 month ago

@DevCharly
When i start the demo and hover over the themes list, tooltip is shown and it chrashes after a few seconds. Here is the console-output:

2024-07-15 10:40:23.150 java[24774:26427323] *** WARNING: References to Carbon menus are disallowed with AppKit menu system on macOS 14 and newer. Use instances of NSMenu and NSMenuItem directly instead. See https://developer.apple.com/documentation/macos-release-notes/appkit-release-notes-for-macos-14#Menus
2024-07-15 10:40:31.174 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:40:31.174 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:40:31.174 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:40:31.175 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:40:31.175 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:40:53.747 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:40:53.753 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:40:53.753 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:40:58.302 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:40:58.308 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:40:58.308 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:01.469 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:01.475 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:01.475 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:09.495 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:09.500 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:09.500 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:13.336 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:13.342 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:13.343 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:13.343 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:17.002 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:17.006 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:17.006 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:22.402 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:22.407 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:22.408 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:22.408 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:22.408 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:22.408 java[24774:26427323] ---- setWindowRoundedBorder END ----
2024-07-15 10:41:25.504 java[24774:26427397] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.hasShadow = YES
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.layer: <MTLLayer: 0x600001a25340>
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.opaque = NO
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:41:25.506 java[24774:26427323] nsWindow invalidateShadow
2024-07-15 10:41:25.506 java[24774:26427323] ---- setWindowRoundedBorder END ----
DevCharly commented 1 month ago

Thanks.

Log shows that FlatLaf native code to enable rounded popup corners is executed successfully. There were 9 tooltips shown within ~1 minute.

And there is no hs_err_pid*.log file in current directory?

ChMThiel commented 1 month ago

no logfiles... seems a hard crash of OS, mouse, keyboard and screen freezes, no interaction possible...after a while system restarts

DevCharly commented 1 month ago

no logfiles... seems a hard crash of OS, mouse, keyboard and screen freezes, no interaction possible...after a while system restarts

😮

And you used a OpenJDK installed by Homebrew, right?

I'm not familiar with Homebrew, but as I understand the OpenJDK Formula, it downloads the OpenJDK source code and compiles it locally, using currently installed Xcode, right? IMHO a lot of thing can go wrong when compiling such a large project as OpenJDK locally...

Have you tried a binary JDK? E.g from https://www.azul.com/downloads/?os=macos&package=jdk#zulu or from https://jdk.java.net/22/ You can download a JDK (or JRE) .zip or .tar.gz, extract it anywhere (e.g. in your home dir), and run it (without installation) from command line.

dyorgio commented 1 month ago

Same logs here:

2024-07-15 10:51:07.754 java[11336:877228] WARNING: Secure coding is not enabled for restorable state! Enable secure coding by implementing NSApplicationDelegate.applicationSupportsSecureRestorableState: and returning YES.
2024-07-15 10:51:12.145 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:51:12.145 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:51:12.146 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:51:12.146 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:51:12.146 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:51:17.667 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:51:17.668 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:51:17.668 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:51:17.668 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:51:21.802 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:51:21.805 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:51:21.805 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:51:21.805 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:51:35.438 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:51:35.440 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:51:35.441 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:51:35.441 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:51:35.441 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:51:35.441 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:51:51.635 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:51:51.639 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:51:51.639 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:51:51.639 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:02.694 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:02.698 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:02.698 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:02.698 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:04.388 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:04.395 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:04.395 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:04.395 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:10.295 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:10.300 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:10.301 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:10.301 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:11.486 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:11.487 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:11.487 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:11.487 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:11.944 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:11.946 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:11.946 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:11.946 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:12.453 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:12.454 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:12.454 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:12.454 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:12.469 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:12.472 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:12.472 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:12.472 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:12.563 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:12.564 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:12.564 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:12.564 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:14.240 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:14.241 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:14.241 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:14.241 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:14.410 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:14.412 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:14.412 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:14.412 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:16.018 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:16.019 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:16.019 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:16.019 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:16.343 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:16.344 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:16.344 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:16.344 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:17.642 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:17.643 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:17.643 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:17.643 java[11336:877228] ---- setWindowRoundedBorder END ----
2024-07-15 10:52:37.603 java[11336:877304] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.hasShadow = YES
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.wantsLayer = YES
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.layer: <MTLLayer: 0x600000cdc460>
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.opaque = NO
2024-07-15 10:52:37.607 java[11336:877228] nsWindow.contentView.layer removeAllAnimations
2024-07-15 10:52:37.607 java[11336:877228] nsWindow invalidateShadow
2024-07-15 10:52:37.607 java[11336:877228] ---- setWindowRoundedBorder END ----

Im my case system not crash, but frozen by 15-20 seconds...

@DevCharly hs_err_pid*.log is not present because java process don't terminate, it still alive and needs to be killed manually.

DevCharly commented 1 month ago

...because java process don't terminate, it still alive and needs to be killed manually.

@dyorgio ok, that's good. There is a JDK tool to create thread dumps of running Java processes. Could you please invoke jstack -l PID > dump.txt (replace PID with real process ID) on the FlatLaf Demo process (after the system has been frozen) and post it here?

dyorgio commented 1 month ago

@DevCharly

Maybe an important detail: My MacBook is a M3 Pro model (more gpu cores).

Process was with 1GB of RAM consumption.

Last App logs:

2024-07-15 14:32:28.252 java[12778:967954] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.hasShadow = YES
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.wantsLayer = YES
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.layer: <MTLLayer: 0x600003de5260>
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.opaque = NO
2024-07-15 14:32:28.254 java[12778:967885] nsWindow.contentView.layer removeAllAnimations
2024-07-15 14:32:28.254 java[12778:967885] nsWindow invalidateShadow
2024-07-15 14:32:28.254 java[12778:967885] ---- setWindowRoundedBorder END ----
2024-07-15 14:32:28.538 java[12778:967954] ---- setWindowRoundedBorder BEGIN ----
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.hasShadow = YES
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.wantsLayer = YES
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.layer: <MTLLayer: 0x600003eff9c0>
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.layer.cornerRadius = 4.000000
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.layer.masksToBounds = YES
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.layer.borderWidth = 0.000000
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.backgroundColor = NSColor.clearColor
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.opaque = NO
2024-07-15 14:32:28.543 java[12778:967885] nsWindow.contentView.layer removeAllAnimations
2024-07-15 14:32:28.543 java[12778:967885] nsWindow invalidateShadow
2024-07-15 14:32:28.543 java[12778:967885] ---- setWindowRoundedBorder END ----
2024-07-15 14:33:09.347 java[12778:967885] HIToolbox: received notification of WindowServer event port death.
2024-07-15 14:33:09.347 java[12778:967885] port matched the WindowServer port created in BindCGSToRunLoop
2024-07-15 14:33:11.455 java[12778:967885] +[NSXPCSharedListener endpointForReply:withListenerName:replyErrorCode:]: an error occurred while attempting to obtain endpoint for listener 'ClientCallsAuxiliary': Connection interrupted
No session list!

JStack:

2024-07-15 14:34:57
Full thread dump OpenJDK 64-Bit Server VM (21.0.3+9-LTS mixed mode, sharing):

Threads class SMR info:
_java_thread_list=0x00006000010caa40, length=18, elements={
0x000000015983e000, 0x000000015983e800, 0x000000015983f000, 0x000000015983f800,
0x0000000159840000, 0x000000013a05bc00, 0x000000013a05ec00, 0x000000013a808200,
0x0000000159842a00, 0x000000013b808200, 0x000000013989fe00, 0x000000013a0ea400,
0x0000000159840800, 0x000000015987b800, 0x000000013b822000, 0x000000013b822800,
0x000000013baf1400, 0x000000036a331800
}

"Reference Handler" #9 [32259] daemon prio=10 os_prio=31 cpu=92,38ms elapsed=525,24s tid=0x000000015983e000 nid=32259 waiting on condition  [0x000000016cfbe000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.ref.Reference.waitForReferencePendingList(java.base@21.0.3/Native Method)
    at java.lang.ref.Reference.processPendingReferences(java.base@21.0.3/Reference.java:246)
    at java.lang.ref.Reference$ReferenceHandler.run(java.base@21.0.3/Reference.java:208)

   Locked ownable synchronizers:
    - None

"Finalizer" #10 [23299] daemon prio=8 os_prio=31 cpu=131,48ms elapsed=525,24s tid=0x000000015983e800 nid=23299 in Object.wait()  [0x000000016d1ca000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait0(java.base@21.0.3/Native Method)
    - waiting on <no object reference available>
    at java.lang.Object.wait(java.base@21.0.3/Object.java:366)
    at java.lang.Object.wait(java.base@21.0.3/Object.java:339)
    at java.lang.ref.NativeReferenceQueue.await(java.base@21.0.3/NativeReferenceQueue.java:48)
    at java.lang.ref.ReferenceQueue.remove0(java.base@21.0.3/ReferenceQueue.java:158)
    at java.lang.ref.NativeReferenceQueue.remove(java.base@21.0.3/NativeReferenceQueue.java:89)
    - locked <0x00000006e000d628> (a java.lang.ref.NativeReferenceQueue$Lock)
    at java.lang.ref.Finalizer$FinalizerThread.run(java.base@21.0.3/Finalizer.java:173)

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" #11 [31491] daemon prio=9 os_prio=31 cpu=0,11ms elapsed=525,24s tid=0x000000015983f000 nid=31491 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Service Thread" #12 [30979] daemon prio=9 os_prio=31 cpu=1,72ms elapsed=525,24s tid=0x000000015983f800 nid=30979 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Monitor Deflation Thread" #13 [23811] daemon prio=9 os_prio=31 cpu=25,04ms elapsed=525,24s tid=0x0000000159840000 nid=23811 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread0" #14 [24067] daemon prio=9 os_prio=31 cpu=7748,25ms elapsed=525,24s tid=0x000000013a05bc00 nid=24067 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

   Locked ownable synchronizers:
    - None

"C1 CompilerThread0" #17 [30467] daemon prio=9 os_prio=31 cpu=1711,25ms elapsed=525,24s tid=0x000000013a05ec00 nid=30467 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

   Locked ownable synchronizers:
    - None

"Notification Thread" #18 [30211] daemon prio=9 os_prio=31 cpu=0,02ms elapsed=525,24s tid=0x000000013a808200 nid=30211 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Common-Cleaner" #19 [25091] daemon prio=8 os_prio=31 cpu=1,80ms elapsed=525,23s tid=0x0000000159842a00 nid=25091 waiting on condition  [0x000000016e01e000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at jdk.internal.misc.Unsafe.park(java.base@21.0.3/Native Method)
    - parking to wait for  <0x00000006e000e648> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(java.base@21.0.3/LockSupport.java:269)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@21.0.3/AbstractQueuedSynchronizer.java:1847)
    at java.lang.ref.ReferenceQueue.await(java.base@21.0.3/ReferenceQueue.java:71)
    at java.lang.ref.ReferenceQueue.remove0(java.base@21.0.3/ReferenceQueue.java:143)
    at java.lang.ref.ReferenceQueue.remove(java.base@21.0.3/ReferenceQueue.java:218)
    at jdk.internal.ref.CleanerImpl.run(java.base@21.0.3/CleanerImpl.java:140)
    at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)
    at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)
    at jdk.internal.misc.InnocuousThread.run(java.base@21.0.3/InnocuousThread.java:186)

   Locked ownable synchronizers:
    - None

"Timer-0" #20 [29699] daemon prio=5 os_prio=31 cpu=1,28ms elapsed=525,21s tid=0x000000013b808200 nid=29699 in Object.wait()  [0x000000016e22a000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait0(java.base@21.0.3/Native Method)
    - waiting on <no object reference available>
    at java.lang.Object.wait(java.base@21.0.3/Object.java:366)
    at java.lang.Object.wait(java.base@21.0.3/Object.java:339)
    at java.util.TimerThread.mainLoop(java.base@21.0.3/Timer.java:537)
    - locked <0x00000006e000ce98> (a java.util.TaskQueue)
    at java.util.TimerThread.run(java.base@21.0.3/Timer.java:516)

   Locked ownable synchronizers:
    - None

"AppKit Thread" #22 [259] daemon prio=5 os_prio=31 cpu=11304,14ms elapsed=525,17s tid=0x000000013989fe00 nid=259 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"AWT-Shutdown" #23 [38667] prio=5 os_prio=31 cpu=27,40ms elapsed=525,14s tid=0x000000013a0ea400 nid=38667 in Object.wait()  [0x000000016e436000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait0(java.base@21.0.3/Native Method)
    - waiting on <no object reference available>
    at java.lang.Object.wait(java.base@21.0.3/Object.java:366)
    at java.lang.Object.wait(java.base@21.0.3/Object.java:339)
    at sun.awt.AWTAutoShutdown.run(java.desktop@21.0.3/AWTAutoShutdown.java:291)
    - locked <0x00000006e000ee58> (a java.lang.Object)
    at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)
    at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)

   Locked ownable synchronizers:
    - None

"AWT-EventQueue-0" #24 [86795] prio=6 os_prio=31 cpu=109527,95ms elapsed=525,09s tid=0x0000000159840800 nid=86795 runnable  [0x000000016e759000]
   java.lang.Thread.State: RUNNABLE
    at javax.swing.text.AbstractDocument$BranchElement.getStartOffset(java.desktop@21.0.3/AbstractDocument.java:2373)
    at javax.swing.text.AbstractDocument$BranchElement.getElementIndex(java.desktop@21.0.3/AbstractDocument.java:2421)
    at javax.swing.text.CompositeView.getViewIndexAtPosition(java.desktop@21.0.3/CompositeView.java:585)
    at javax.swing.text.FlowView$LogicalView.getViewIndexAtPosition(java.desktop@21.0.3/FlowView.java:713)
    at javax.swing.text.CompositeView.getViewIndex(java.desktop@21.0.3/CompositeView.java:503)
    at javax.swing.text.TextLayoutStrategy.createView(java.desktop@21.0.3/TextLayoutStrategy.java:191)
    at javax.swing.text.FlowView$FlowStrategy.layoutRow(java.desktop@21.0.3/FlowView.java:538)
    at javax.swing.text.TextLayoutStrategy.layoutRow(java.desktop@21.0.3/TextLayoutStrategy.java:135)
    at javax.swing.text.FlowView$FlowStrategy.layout(java.desktop@21.0.3/FlowView.java:494)
    at javax.swing.text.TextLayoutStrategy.layout(java.desktop@21.0.3/TextLayoutStrategy.java:118)
    at javax.swing.text.FlowView.layout(java.desktop@21.0.3/FlowView.java:209)
    at javax.swing.text.BoxView.setSize(java.desktop@21.0.3/BoxView.java:398)
    at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(java.desktop@21.0.3/BasicTextUI.java:1823)
    at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(java.desktop@21.0.3/BasicTextUI.java:943)
    at com.formdev.flatlaf.ui.FlatTextFieldUI.getPreferredSize(FlatTextFieldUI.java:543)
    at javax.swing.JComponent.getPreferredSize(java.desktop@21.0.3/JComponent.java:1734)
    at javax.swing.JTextField.getPreferredSize(java.desktop@21.0.3/JTextField.java:439)
    at net.miginfocom.swing.SwingComponentWrapper.getLayoutHashCode(Unknown Source)
    at net.miginfocom.swing.MigLayout.checkCache(Unknown Source)
    at net.miginfocom.swing.MigLayout.getSizeImpl(Unknown Source)
    at net.miginfocom.swing.MigLayout.preferredLayoutSize(Unknown Source)
    - locked <0x00000006e007fde8> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.preferredSize(java.desktop@21.0.3/Container.java:1826)
    - locked <0x00000006e007fde8> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.getPreferredSize(java.desktop@21.0.3/Container.java:1810)
    at javax.swing.JComponent.getPreferredSize(java.desktop@21.0.3/JComponent.java:1736)
    at com.formdev.flatlaf.ui.FlatTabbedPaneUI$FlatTabbedPaneLayout.isContentEmpty(FlatTabbedPaneUI.java:3273)
    at com.formdev.flatlaf.ui.FlatTabbedPaneUI$FlatTabbedPaneScrollLayout.preferredLayoutSize(FlatTabbedPaneUI.java:3731)
    at java.awt.Container.preferredSize(java.desktop@21.0.3/Container.java:1826)
    - locked <0x00000006e007fde8> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.getPreferredSize(java.desktop@21.0.3/Container.java:1810)
    at javax.swing.JComponent.getPreferredSize(java.desktop@21.0.3/JComponent.java:1736)
    at net.miginfocom.swing.SwingComponentWrapper.getLayoutHashCode(Unknown Source)
    at net.miginfocom.swing.MigLayout.checkCache(Unknown Source)
    at net.miginfocom.swing.MigLayout.layoutContainer(Unknown Source)
    - locked <0x00000006e007fde8> (a java.awt.Component$AWTTreeLock)
    at java.awt.Container.layout(java.desktop@21.0.3/Container.java:1541)
    at java.awt.Container.doLayout(java.desktop@21.0.3/Container.java:1530)
    at java.awt.Container.validateTree(java.desktop@21.0.3/Container.java:1725)
    at java.awt.Container.validateTree(java.desktop@21.0.3/Container.java:1734)
    at java.awt.Container.validateTree(java.desktop@21.0.3/Container.java:1734)
    at java.awt.Container.validateTree(java.desktop@21.0.3/Container.java:1734)
    at java.awt.Container.validate(java.desktop@21.0.3/Container.java:1660)
    - locked <0x00000006e007fde8> (a java.awt.Component$AWTTreeLock)
    at javax.swing.RepaintManager$3.run(java.desktop@21.0.3/RepaintManager.java:757)
    at javax.swing.RepaintManager$3.run(java.desktop@21.0.3/RepaintManager.java:755)
    at java.security.AccessController.executePrivileged(java.base@21.0.3/AccessController.java:778)
    at java.security.AccessController.doPrivileged(java.base@21.0.3/AccessController.java:400)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@21.0.3/ProtectionDomain.java:87)
    at javax.swing.RepaintManager.validateInvalidComponents(java.desktop@21.0.3/RepaintManager.java:754)
    at javax.swing.RepaintManager$ProcessingRunnable.run(java.desktop@21.0.3/RepaintManager.java:1896)
    at java.awt.event.InvocationEvent.dispatch(java.desktop@21.0.3/InvocationEvent.java:318)
    at java.awt.EventQueue.dispatchEventImpl(java.desktop@21.0.3/EventQueue.java:773)
    at java.awt.EventQueue$4.run(java.desktop@21.0.3/EventQueue.java:720)
    at java.awt.EventQueue$4.run(java.desktop@21.0.3/EventQueue.java:714)
    at java.security.AccessController.executePrivileged(java.base@21.0.3/AccessController.java:778)
    at java.security.AccessController.doPrivileged(java.base@21.0.3/AccessController.java:400)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@21.0.3/ProtectionDomain.java:87)
    at java.awt.EventQueue.dispatchEvent(java.desktop@21.0.3/EventQueue.java:742)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop@21.0.3/EventDispatchThread.java:203)
    at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop@21.0.3/EventDispatchThread.java:124)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop@21.0.3/EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(java.desktop@21.0.3/EventDispatchThread.java:109)
    at java.awt.EventDispatchThread.pumpEvents(java.desktop@21.0.3/EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.run(java.desktop@21.0.3/EventDispatchThread.java:90)

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" #25 [10499] prio=5 os_prio=31 cpu=56,05ms elapsed=525,09s tid=0x000000015987b800 nid=10499 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Java2D Queue Flusher" #26 [67331] daemon prio=10 os_prio=31 cpu=34485,39ms elapsed=525,07s tid=0x000000013b822000 nid=67331 in Object.wait()  [0x000000016e966000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait0(java.base@21.0.3/Native Method)
    - waiting on <no object reference available>
    at java.lang.Object.wait(java.base@21.0.3/Object.java:366)
    at sun.java2d.metal.MTLRenderQueue$QueueFlusher.run(java.desktop@21.0.3/MTLRenderQueue.java:210)
    - locked <0x00000006e000d6e8> (a sun.java2d.metal.MTLRenderQueue$QueueFlusher)
    at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)
    at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)

   Locked ownable synchronizers:
    - None

"Java2D Disposer" #27 [85251] daemon prio=10 os_prio=31 cpu=7,29ms elapsed=525,07s tid=0x000000013b822800 nid=85251 waiting on condition  [0x000000016eb72000]
   java.lang.Thread.State: WAITING (parking)
    at jdk.internal.misc.Unsafe.park(java.base@21.0.3/Native Method)
    - parking to wait for  <0x00000006e000e168> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(java.base@21.0.3/LockSupport.java:371)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base@21.0.3/AbstractQueuedSynchronizer.java:519)
    at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@21.0.3/ForkJoinPool.java:3780)
    at java.util.concurrent.ForkJoinPool.managedBlock(java.base@21.0.3/ForkJoinPool.java:3725)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@21.0.3/AbstractQueuedSynchronizer.java:1707)
    at java.lang.ref.ReferenceQueue.await(java.base@21.0.3/ReferenceQueue.java:67)
    at java.lang.ref.ReferenceQueue.remove0(java.base@21.0.3/ReferenceQueue.java:158)
    at java.lang.ref.ReferenceQueue.remove(java.base@21.0.3/ReferenceQueue.java:234)
    at sun.java2d.Disposer.run(java.desktop@21.0.3/Disposer.java:145)
    at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)
    at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)

   Locked ownable synchronizers:
    - None

"TimerQueue" #28 [82183] daemon prio=5 os_prio=31 cpu=114,99ms elapsed=524,75s tid=0x000000013baf1400 nid=82183 waiting on condition  [0x0000000316a06000]
   java.lang.Thread.State: WAITING (parking)
    at jdk.internal.misc.Unsafe.park(java.base@21.0.3/Native Method)
    - parking to wait for  <0x00000006e000f730> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(java.base@21.0.3/LockSupport.java:371)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base@21.0.3/AbstractQueuedSynchronizer.java:519)
    at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@21.0.3/ForkJoinPool.java:3780)
    at java.util.concurrent.ForkJoinPool.managedBlock(java.base@21.0.3/ForkJoinPool.java:3725)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@21.0.3/AbstractQueuedSynchronizer.java:1707)
    at java.util.concurrent.DelayQueue.take(java.base@21.0.3/DelayQueue.java:242)
    at javax.swing.TimerQueue.run(java.desktop@21.0.3/TimerQueue.java:165)
    at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)
    at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)

   Locked ownable synchronizers:
    - <0x00000006e02ce898> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"Attach Listener" #49 [56859] daemon prio=9 os_prio=31 cpu=0,32ms elapsed=0,12s tid=0x000000036a331800 nid=56859 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"VM Thread" os_prio=31 cpu=152,86ms elapsed=525,25s tid=0x00000001597054a0 nid=19459 runnable  

"GC Thread#0" os_prio=31 cpu=208,97ms elapsed=525,28s tid=0x0000000159608260 nid=12547 runnable  

"GC Thread#1" os_prio=31 cpu=216,05ms elapsed=524,68s tid=0x000000015976cf10 nid=81927 runnable  

"GC Thread#2" os_prio=31 cpu=196,54ms elapsed=524,68s tid=0x000000015976d480 nid=71427 runnable  

"GC Thread#3" os_prio=31 cpu=198,08ms elapsed=524,68s tid=0x000000013b06f360 nid=81411 runnable  

"GC Thread#4" os_prio=31 cpu=210,19ms elapsed=524,68s tid=0x000000013b06f700 nid=80899 runnable  

"GC Thread#5" os_prio=31 cpu=198,13ms elapsed=524,68s tid=0x000000013b070060 nid=71939 runnable  

"GC Thread#6" os_prio=31 cpu=210,21ms elapsed=524,68s tid=0x000000013b0709c0 nid=80131 runnable  

"GC Thread#7" os_prio=31 cpu=195,65ms elapsed=524,68s tid=0x00000001596d4a80 nid=72195 runnable  

"GC Thread#8" os_prio=31 cpu=201,12ms elapsed=524,68s tid=0x00000001596d4ff0 nid=72707 runnable  

"G1 Main Marker" os_prio=31 cpu=0,43ms elapsed=525,28s tid=0x0000000139604e20 nid=12803 runnable  

"G1 Conc#0" os_prio=31 cpu=13,09ms elapsed=525,28s tid=0x00000001396057a0 nid=13315 runnable  

"G1 Conc#1" os_prio=31 cpu=9,89ms elapsed=524,43s tid=0x000000013965a3b0 nid=74795 runnable  

"G1 Refine#0" os_prio=31 cpu=77,97ms elapsed=525,28s tid=0x000000013a055600 nid=16387 runnable  

"G1 Service" os_prio=31 cpu=13,10ms elapsed=525,28s tid=0x00000001596087d0 nid=21507 runnable  

"VM Periodic Task Thread" os_prio=31 cpu=136,86ms elapsed=525,25s tid=0x0000000159609760 nid=17155 waiting on condition  

JNI global refs: 308, weak refs: 106
DevCharly commented 1 month ago

@dyorgio thank's for the dump. I'll have a look...

Process was with 1GB of RAM consumption

That's too much. On a M1 mini it consumes 145MB after startup (Zulu 22.0.1). Moving mouse over themes list and showing some tooltips increases memory usage to 151MB. (values from "Activity Monitor" app)

@dyorgio how much memory is used after startup? And does it increase when tooltips are shown?

dyorgio commented 1 month ago

@DevCharly No, it only increases when process crashes WindowServer.

mbien commented 1 month ago

I updated https://github.com/apache/netbeans/pull/7565 to bundle FlatLaf 3.5 which @DevCharly just released. It disables the rounded popups on mac.

dev build for testing purposes is here: https://github.com/apache/netbeans/actions/runs/9965729754/artifacts/1708622944

DevCharly commented 1 month ago

Short update from my side: after spending more than a day in trying to reproduce the problem, without success, I gave up and disabled rounded popup border for macOS 14.4+ in FlatLaf 3.5. Older macOS versions still use it. Hope that a solution can be found in the future...

remcopoelstra commented 1 month ago

@DevCharly I was just comparing your native code to the Jetbrains implementation, and without really understanding the jni/cocoa specifics I was wondering why the JNI_COCOA_EXIT() is called after return TRUE;, it seems to me this code cannot be reached.

        [nsWindow.contentView.layer removeAllAnimations];
        [nsWindow invalidateShadow];
    }];

    return TRUE;

    JNI_COCOA_EXIT()
    return FALSE;
}
dyorgio commented 1 month ago

@remcopoelstra it is just a macro. Before compilation it is replaced by a piece of code (catch exception in this case)

DevCharly commented 1 month ago

@remcopoelstra JNI_COCOA_EXIT() is not a real method invocation. It is a macro that expands to a @catch block. It is defined here: https://github.com/JFormDesigner/FlatLaf/blob/d510fee7f6b3c05c323ed4560d7dde2190cefa02/flatlaf-natives/flatlaf-natives-macos/src/main/headers/JNIUtils.h#L36-L41

The resulting code looks like this:

    ...
    return TRUE;
} @catch( NSException *ex ) {
    NSLog( @"Exception: ... );
}
return FALSE;
remcopoelstra commented 1 month ago

@dyorgio @DevCharly I understand now, sorry about that. I am also not able to reproduce this on my MacOS systems so I was curious about the code.

mbien commented 1 month ago

please someone verify that updating to flatlaf 3.5 is resolving this issue: https://github.com/apache/netbeans/issues/7560#issuecomment-2232039922

remcopoelstra commented 1 month ago

I think Jetbrains might also have this (or a similar) issue:

https://rider-support.jetbrains.com/hc/en-us/community/posts/16240803882002-Rider-causing-WindowServer-to-crash-on-MacOS-Sonoma and https://youtrack.jetbrains.com/issue/JBR-6451?_gl=1*c1qods*_gcl_au*MTAyNjYwNDk0Mi4xNzIwMTA0MzM5*_ga*OTgwMDUzODExLjE3MjAxMDQzNDA.*_ga_9J976DJZ68*MTcyMTI4ODUyMC4zLjAuMTcyMTI4ODUyMC42MC4wLjA.

But I get the impression it is caused by MacOS problems, I see external monitors getting mentioned a lot:

https://www.reddit.com/r/MacOS/comments/17222mf/anyone_else_having_windowserver_crash_every_now/ and https://discussions.apple.com/thread/254325498?sortBy=best

@dyorgio @ChMThiel are you perhaps using a external monitor? And if so, could you also check without?

I also came across these stackoverflow discussions that mention WindowServer performance issues when styling a NSWindow in a certain way:

https://stackoverflow.com/questions/59309522/opaque-nswindow-and-windowserver-poor-performance and https://stackoverflow.com/questions/46175906/layer-hosted-nsview-with-lots-of-calayers-inside-windowserver-cpu-100

For me this starting to look more like a MacOS issue then a FlatLaf issue.