On Mon, 29 Jun 2020 16:41:53 GMT, Frederic Thevenet
<[email protected]> wrote:
>> I have changed the test setup to fill up the scene with a gradient instead
>> of random noise; it should be as able to
>> catch misalignment, while not looking like something's gone horribly wrong.
>
> Also, while running the tests again on a ubuntu 20.04 VM, I encountered 2
> occurences where one of the tests failed, out
> of ~8 runs in total. In one case, the error where similar to yours:
>> Task :systemTests:test
>
> test.javafx.scene.Snapshot2Test > testSnapshot2x2TilesSameSizeImm[3] FAILED
> java.lang.IllegalArgumentException: Unrecognized image loader: null
> at
> javafx.graphics/javafx.scene.image.WritableImage.loadTkImage(WritableImage.java:278)
> at
> javafx.graphics/javafx.scene.image.WritableImage$1.loadTkImage(WritableImage.java:53)
> at javafx.graphics/javafx.scene.Scene.doSnapshot(Scene.java:1342)
> at javafx.graphics/javafx.scene.Node.doSnapshot(Node.java:2136)
> at javafx.graphics/javafx.scene.Node.snapshot(Node.java:2214)
> at
> test.javafx.scene.Snapshot2Test.lambda$doTestTiledSnapshotImm$12(Snapshot2Test.java:375)
>
> 148 tests completed, 1 failed
> While in the other, it pointed to an Out Of Memory Error:
>
> Task :systemTests:test
>
> test.javafx.scene.Snapshot2Test > testSnapshot2x2TilesSameHeightDefer[3]
> FAILED
> java.lang.OutOfMemoryError: Java heap space
> at java.base/java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:63)
> at java.base/java.nio.ByteBuffer.allocate(ByteBuffer.java:351)
> at
> javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.createPlatformImage(QuantumToolkit.java:1426)
> at javafx.graphics/javafx.scene.image.Image.<init>(Image.java:740)
> at
> javafx.graphics/javafx.scene.image.WritableImage.<init>(WritableImage.java:77)
> at
> test.javafx.scene.Snapshot2Test.doTestTiledSnapshotDefer(Snapshot2Test.java:377)
> at
> test.javafx.scene.Snapshot2Test.testSnapshot2x2TilesSameHeightDefer(Snapshot2Test.java:489)
>
> 148 tests completed, 1 failed
>
> Again, in my environment, it only failed one test, and not all the time, but
> this could be the same root cause. Two
> ways we could find out would be by either increasing the max heap size for
> the test runner or use a smaller image and
> force the prism.maxTextureSize property to something less than 4096 to
> trigger tiling anyway. Unfortunately, I could
> not find out how to achieve either of these (simply passing the properties to
> the JVM running the Gradle wrapper seem
> to have no effect).
It runs fine for me on Ubuntu 20.04 (VM) and Windows 10.
I also see the failures on macOS. This isn't related to heap size. The failures
are consistent, and hit virtually all
of the tests whose dimensions are larger than 4096. Also, I modified the test
to `@Ignore` all but one of the failing
tests, and that test still fails.
I instrumented the code, and from one of the failing tests I see this:
renderToImage: need to tile image, size = 18000 x 90
renderTile: 4096 x 90
renderTile: 4096 x 90
renderTile: 4096 x 90
renderTile: 4096 x 90
renderTile: 1616 x 90
renderTile: 4096 x 0
This last tile is an illegal tile size (so you're probably just getting lucky
that it isn't causing problems on Windows
or Linux). I would check the tiling logic.
-------------
PR: https://git.openjdk.java.net/jfx/pull/112