On Mon, 28 Apr 2025 17:32:09 GMT, Alexey Ivanov <aiva...@openjdk.org> wrote:

>>> The test doesn't work on Linux either. The problem on Linux is that there 
>>> are too many graphics configurations are returned.
>>> 
>>> On my Fedora Linux 42 with two monitors, `gs[j].getConfigurations()` 
>>> returns an array of length **176**.
>>> 
>>> It could be the reason why the loop divides the number of configurations: 
>>> `gc.length / 2`.
>>> 
>>> In the end, this loop creates **176** window and a thread for each of the 
>>> windows. This hangs GNOME shell completely. A few times, I was able to kill 
>>> the `java` process via SSH connection, but it doesn't always help, and it 
>>> still takes quite a while to get back to responsive UI.
>>> 
>>> I'm sure this problem was discussed somewhere… (I'll search for that 
>>> discussion later.) We should limit testing to default configurations only.
>>> 
>>> As for Windows, the test could be usable on Windows and macOS if you remove 
>>> replace `< gc.length / 2` with `< gc.length` as @kboulanou suggested 
>>> initially. On Windows and macOS, there's usually only one configuration 
>>> returned from `gs[j].getConfigurations()` for each screen.
>> 
>> 
>> I tested on Ubuntu 22.04 and don't find any issues. 
>> `gs[j].getConfigurations()` returns an array of length **120**, it took 
>> sometime to get back to responsive UI but the waiting time is not that much.
>> Seems creating another **38** windows and a thread for each window causing 
>> more overhead in your case.
>> 
>> I agree that `gc.length/2` is to reduce the number of frames created on the 
>> screen to avoid the hang.
>> If the testing doesn't require so many frames to create then it can be 
>> reduced for linux as well (may be 5 or something based on the `gc.length` 
>> returned from `gs[j].getConfigurations().
>> 
>> Since the original bug was raised for Solaris, I suggested to drop the 
>> testing for Windows and Mac.
>> 
>> As per the bug description, `The picture is: No images or few images showed 
>> up on the second screen, but the first screen is messed up with images and 
>> text strings everywhere.`, my assumption is **creating multiple frames with 
>> images and text strings may be the requirement (although it's not clearly 
>> mentioned)**.
>> 
>> @aivanov-jdk  If we replace `< gc.length / 2` with `< gc.length` on Windows 
>> and Mac, we will have less frames to test. I agree this will make the test 
>> to run but will it add any value to it ?
>
>> I tested on Ubuntu 22.04 and don't find any issues. 
>> `gs[j].getConfigurations()` returns an array of length **120**, it took 
>> sometime to get back to responsive UI but the waiting time is not that much. 
>> Seems creating another **38** windows and a thread for each window causing 
>> more overhead in your case.
> 
> I'm pretty sure it depends on hardware: how many configurations are returned 
> and how easy the OS and CPU can handle lots of threads.
> 
>> I agree that `gc.length/2` is to reduce the number of frames created on the 
>> screen to avoid the hang. If the testing doesn't require so many frames to 
>> create then it can be reduced for linux as well (may be 5 or something based 
>> on the `gc.length` returned from `gs[j].getConfigurations().
> 
> I don't see how such a huge number of windows can possibly improve testing.
> 
> I'd say testing the default configuration which is the current one for the 
> screen should be enough.
> 
>> Since the original bug was raised for Solaris, I suggested to drop the 
>> testing for Windows and Mac.
>> 
>> As per the bug description, `The picture is: No images or few images showed 
>> up on the second screen, but the first screen is messed up with images and 
>> text strings everywhere.`, my assumption is **creating multiple frames with 
>> images and text strings may be the requirement (although it's not clearly 
>> mentioned)**.
> 
> I do not think so.
> 
>> @aivanov-jdk If we replace `< gc.length / 2` with `< gc.length` on Windows 
>> and Mac, we will have less frames to test. I agree this will make the test 
>> to run but will it add any value to it ?
> 
> As it looks, the test isn't valuable in its current state either way.
> 
> I don't think we'll be able to reproduce the original problem, yet it may be 
> possible.
> 
> [The bug 
> description](https://bugs.openjdk.org/browse/JDK-4312921#descriptionmodule) 
> states,
> 
>> No images or few images showed up on the second screen, but the first screen 
>> is messed up with images and text strings everywhere. Those wrong text 
>> strings and images stay on the first screen even after the screenTest 
>> application terminated. It seems not like the repaint problem since the 
>> images were drawn to the wrong place at the first beginning.
> 
> Then [Phil says in his 
> comment](https://bugs.openjdk.org/browse/JDK-4312921?focusedId=12554259&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12554259),
> 
>> The DGA docs are VERY misleading … indicate that the file descriptor 
>> returned from `dga_draw_devfd` is per device. This is not always so as we 
>> discovered.
> 
> Th...

@aivanov-jdk In that case, test can be modified to run for default 
configuration for all platforms.

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

PR Comment: https://git.openjdk.org/jdk/pull/24752#issuecomment-2837868859

Reply via email to