On Tue, 21 Jul 2026 10:32:08 GMT, Jose Pereda <[email protected]> wrote:
> This PR creates a native owned copy of the pixel buffer passed to > GlassPixels::getImage, to let AppKit start, at any later time, the > rasterization of the images for the system menu bars with a native object > that outlives the Java buffer. Therefore, if under certain conditions of high > memory pressure, the latter is reclaimed and collected, the former is still > available. > > A manual test has been included. > > Since this is a memory pressure/timing issue, it is not deterministic, and > depends on several conditions. Therefore, it needs to be run several times to > spot the issue (before the proposed fix). After the fix, the issue should > never happen again. > > When running it from `tests/manual/systemmenu`, with: > > $JAVA_HOME/bin/java @../../../build/run.args > MacOSSystemMenuImageGraphicTest.java > > it might not trigger the crash, but still the icons might be missing or > garbled most of the runs. > > However, with: > > > $JAVA_HOME/bin/javac @../../../build/run.args > MacOSSystemMenuImageGraphicTest.java // remove --enable-native-access from > run.args > $JAVA_HOME/bin/java @../../../build/run.args MacOSSystemMenuImageGraphicTest > > the crash is more likely to happen in different runs. > > Other options to increase the likelihood of failure is to use a low Xmx, or > to increase the `COUNTER` value. > > --------- > - [X] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). I've filed https://bugs.openjdk.org/browse/JDK-8388786 for the `NSImage` leak. ------------- PR Comment: https://git.openjdk.org/jfx/pull/2219#issuecomment-5048218763
