RFR: 8293862: javax/swing/JFileChooser/8046391/bug8046391.java failed with 'Cannot invoke "java.awt.Image.getWidth(java.awt.image.ImageObserver)" because "retVal" is null'

Alexey Ivanov aivanov at openjdk.org
Tue Nov 15 15:41:55 UTC 2022


On Tue, 15 Nov 2022 06:28:02 GMT, Tejesh R <tr at openjdk.org> wrote:

> Yeah, the only way the retVal can become null would-be if `resolutionVariants` doesn't have an Icon. I could not reproduce the bug since it is intermittent, I came to this conclusion only by code analysis though. Should I check for `resolutionVariants` if its empty and return null without proceeding further......? I guess both the ways `null` will be returned?

An MRI that has no images does not make any sense, we should've returned null.

There are two usages of the constructor which accepts resolution variants:
https://github.com/openjdk/jdk/blob/6c8d0e617ff59eee1313589b10edbf5830774db5/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java#L1185
https://github.com/openjdk/jdk/blob/6c8d0e617ff59eee1313589b10edbf5830774db5/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java#L1112-L1113

There are four usages of the other constructor which accepts an image.

Since it's an intermittent problem, we need to add debugging code to the code which creates the `MultiResolutionIconImage` object or handle the exceptional cases in the constructor… by adding an `assert` statement. The tests are run with asserts enabled and we may get more data.

Is there a host where the test is more likely to fail? Does it fail on different hosts?

Adding the null check to `getResolutionVariant` does not fix the root cause. Instead, it'll make it impossible to find the root cause because everything would look as if no problem exists.

-------------

PR: https://git.openjdk.org/jdk/pull/11104



More information about the client-libs-dev mailing list