RFR: 8185862: AWT Assertion Failure in ::GetDIBits(hBMDC, hBM, 0, 1, 0, gpBitmapInfo, 0) 'awt_Win32GraphicsDevice.cpp', at line 185 [v4]

Alexey Ivanov aivanov at openjdk.org
Fri Feb 16 11:33:53 UTC 2024


On Fri, 16 Feb 2024 08:46:10 GMT, Christoph Langer <clanger at openjdk.org> wrote:

>> The assertions reported in the bug were observed spuriously and here and there broke tests in some Windows configurations.
>> For instance [JDK-8266129](https://bugs.openjdk.org/browse/JDK-8266129), [JDK-8269529](https://bugs.openjdk.org/browse/JDK-8269529) or [JDK-8323664](https://bugs.openjdk.org/browse/JDK-8323664) came up due to this.
>> 
>> The problem is that in Windows environments without a valid display, e.g. started by system services or via PowerShell Remoting, one sees a Monitor with name 'Windisc' in `EnumDisplayMonitors`.
>> However, it seems to be some kind of a pseudo device where you can not get a DC via `CreateDC`. This behavior/monitor type doesn't seem to be well documented, though.
>> 
>> I hereby modify the device initialization code to only count/detect monitors where CreateDC returns non-NULL in Devices.cpp. I also add some more checking/error handling to AwtWin32GraphicsDevice::Initialize() for correctness.
>> 
>> Furthermore, I re-enable the test `javax/swing/reliability/HangDuringStaticInitialization.java` for Windows Debug VMs, which reverts the fix from JDK-8269529 that should not be necessary any more.
>
> Christoph Langer has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Little cleanup

Looks good to me…  
except for comment on `gpBitmapInfo` in `AwtWin32GraphicsDevice::Initialize`.

src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp line 200:

> 198:     }
> 199: 
> 200:     if (colorData->bitsperpixel > 8) {

So at this time, the code below will not be run if an error occurs. This may lead to leaving the fields of `gpBitmapInfo` uninitialised.

I'm unsure how critical it is… even though we're (presumably) on a headless system.

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

Marked as reviewed by aivanov (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17614#pullrequestreview-1884901926
PR Review Comment: https://git.openjdk.org/jdk/pull/17614#discussion_r1492335100


More information about the client-libs-dev mailing list