RFR: 8353950: Clipboard interaction on Windows is unstable [v3]
Damon Nguyen
dnguyen at openjdk.org
Thu May 29 16:50:55 UTC 2025
On Thu, 15 May 2025 16:48:47 GMT, Matthias Bläsing <mblaesing at openjdk.org> wrote:
>> - Introduce a lock into WClipboard that protects the code between
>> openClipboard/closeClipboard invocations.
>> The native side does not allow to open the clipboard multiple
>> times or share the opened clipboard between multiple threads.
>>
>> - Remove of need to call openClipboard/closeClipboard from
>> getClipboardFormats by using the win32 call
>> GetUpdatedClipboardFormats
>>
>> - Prevent a race-condition by not registering the connection
>> between java and native side of clipboard multiple time, but
>> just at construction time.
>
> Matthias Bläsing has updated the pull request incrementally with one additional commit since the last revision:
>
> Add crash reproducer as jtreg test
src/java.desktop/share/classes/sun/awt/datatransfer/SunClipboard.java line 208:
> 206:
> 207: try {
> 208: openClipboard(null);
Can you help me understand why this is better? Seems odd that the try/finally block has `closeClipboard` in the finally block but the `openClipboard` was moved out of the try.
src/java.desktop/windows/classes/sun/awt/windows/WClipboard.java line 189:
> 187: checkChange(formats);
> 188: } catch (Throwable ex) {
> 189: System.getLogger(WClipboard.class.getName()).log(Level.WARNING, "Failed to process handleContentsChanged", ex);
I'm not saying not to necessarily change this, but what are we hoping to see with logging this warning here?
test/jdk/java/awt/Clipboard/ConcurrentClipboardAccessTest.java line 29:
> 27: @summary tests that concurrent access to the clipboard does not crash the JVM
> 28: @run main ConcurrentClipboardAccessTest
> 29: */
It has been brought to my attention that this test needs to be headful since we're dealing with clipboard behavior.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24614#discussion_r2114346429
PR Review Comment: https://git.openjdk.org/jdk/pull/24614#discussion_r2114337249
PR Review Comment: https://git.openjdk.org/jdk/pull/24614#discussion_r2114349984
More information about the client-libs-dev
mailing list