RFR: 8361521 : BogusFocusableWindowState.java fails with StackOverflowError on Linux [v5]

Alexey Ivanov aivanov at openjdk.org
Wed Aug 27 18:37:46 UTC 2025


On Wed, 20 Aug 2025 05:05:20 GMT, Anass Baya <abaya at openjdk.org> wrote:

>> **Analysis:**
>> The getFocusableWindowState() method is not intended to modify the configuration; doing so can cause recursive re-entry on Linux.
>> 
>> **Proposed Fix:**
>> We are intentionally overriding getFocusableWindowState() to allow it to change the configuration, in order to verify that calling getScreenImOn() for ownerless windows does not throw any exceptions.
>> To prevent recursive re-entry, we use a flag to ensure that getFocusableWindowState() is executed only once
>
> Anass Baya has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add space

Since the failure of the test `BogusFocusableWindowState.java` proved to be a product bug, you have to add `8361521` into the `@bug` tag in `BogusFocusableWindowState.java`

src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java line 1105:

> 1103:         }
> 1104:         promoteDefaultPosition();
> 1105:         boolean refreshChildsTransientFor = isVisible() != vis;

Move the assignment

boolean refreshChildsTransientFor = isVisible() != vis;

before the `if` statement, and use `refreshChildsTransientFor` in the condition to avoid evaluating the same condition twice.

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

Changes requested by aivanov (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26298#pullrequestreview-3161301508
PR Review Comment: https://git.openjdk.org/jdk/pull/26298#discussion_r2304991267


More information about the client-libs-dev mailing list