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