On Thu, 3 Oct 2024 09:35:51 GMT, Lukasz Kostyra <lkost...@openjdk.org> wrote:
> Contrary to issue description, the problem was not because we referenced a > texture after it was freed, but we referenced an RTT that we just tried to > allocate and failed to do so because of lack of space in Prism's vram pool. > In case of attached `WebViewAnimationTest.java` test app, the problem exists > because WebView tries to allocate a new RTT for newly opened WebView scene > and the Prism pool does not have 16MB needed while previous WebView is still > being displayed. Only after the old WebView is disposed of, then the RTT > allocation can proceed and WebView can continue as normal. > > I looked around and did not find other solution than adding the null-checks > to silence the NPE being thrown. NPE was originally in `RTImage.java`, > however after adding a null check there triggered another NPE in > `WCGraphicsPrismContext.java`, so I also added another null check there. > Upper layers of web module seem to handle those just fine, the NPEs > disappeared after that and the test still works properly once the pool gets > enough room to display. > > All of our tests run fine with this change (I do not expect any major > regressions, as this happens only with a very limited memory pool scenario - > it was extremely hard and time consuming to trigger this bug on the test app > with default 512MB pool limit). For the test app, it might take a couple > frames until the old WebView is disposed of and there is enough room for new > WebView's RTT in the pool, after that the scene renders properly. This pull request has now been integrated. Changeset: fb06b1f8 Author: Lukasz Kostyra <lkost...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/fb06b1f8e88d1c09cc8109ad3cb0ef5a5a754934 Stats: 9 lines in 2 files changed: 9 ins; 0 del; 0 mod 8333374: Cannot invoke "com.sun.prism.RTTexture.contentsUseful()" because "this.txt" is null Reviewed-by: kcr, jpereda, hmeda ------------- PR: https://git.openjdk.org/jfx/pull/1590