<AWT Dev>  Review Request: 8189604 possible hang in sun.awt.shell.Win32ShellFolder2$KnownFolderDefinition::<clinit>
krishna.addepalli at oracle.com
Mon Jun 25 11:52:03 UTC 2018
The fix looks fine. However, I have couple of comments:
1. The variable "result" in Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders at line 1401 is not initialized. Although it is initialized in the following if condition, I'm not sure when it return false, and lead to a return of garbage value to Java.
2. Could you clarify a bit about the testcase - how it triggers the hang/crash?
From: Sergey Bylokhov
Sent: Monday, June 25, 2018 2:21 PM
To: awt-dev at openjdk.java.net
Subject: <AWT Dev>  Review Request: 8189604 possible hang in sun.awt.shell.Win32ShellFolder2$KnownFolderDefinition::<clinit>
Please review the fix for jdk11.
We have a cyclic dependency in Win32ShellFolder2$KnownFolderDefinition,
which can cause a deadlock if this class is initialized on "non-COM" thread.
1. - Static initialization of Win32ShellFolder2$KnownFolderDefinition
2. -- Win32ShellFolder2.getLibraries();
3. --- invoke Win32ShellFolder2.loadKnownFolders() on "COM-thread" and wait 4. ---- in the native call
5. ---- deadlock. because initialization of KnownFolderDefinition was blocked at step 3.
In the fix this dependency is broken, so the new class KnownLibraries is not depends from its own initialization.
Best regards, Sergey.
More information about the awt-dev