On Tue, 4 Nov 2025 14:49:56 GMT, Lukasz Kostyra <[email protected]> wrote:
>> This PR fixes NPE thrown when trying to update D3D texture in some rare >> scenarios. >> >> On more stressful cases (like the one using Canvas attached to this issue) >> it is possible that a D3DTexture.update() call will go through after the >> Resource Pool already pruned the underlying Texture's resource. This in turn >> caused an NPE, which propagated to higher levels and disrupted the rendering >> loop, causing the Canvas to not be drawn anymore. The update() call seems >> not to be called more than once on an already freed resource, suggesting >> this is some sort of rare race between the pool and the drawing code. >> >> This change prevents the NPE from being thrown. I noticed no visual problems >> with the test even when the update() call is rejected by the newly added >> check. Best way to verify it is to add a log call inside added `if >> (!resource.isValid())` blocks when running the test, it will occasionally >> get printed but the test itself won't change its behavior like it does >> without this change. > > Lukasz Kostyra has updated the pull request incrementally with one additional > commit since the last revision: > > Review comments - MTLTexture: add isValid() check to update(MediaFrame) For me it was much better, but when I now go to further extremes (more windows open with images) eventually it does throw NPE's again. I didn't manage to get a stack trace yet (they got reduced to a single line by the VM and my logs ran out), but will add here once I do. ------------- PR Comment: https://git.openjdk.org/jfx/pull/1951#issuecomment-3491888754
