<AWT Dev> [9] Review request for 8048289 Gtk: call to UIManager.getSystemLookAndFeelClassName() leads to crash

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Thu Jul 17 15:02:15 UTC 2014


Hi Sergey,
You are right: UNIXToolkit.unload_gtk() is never called. But it will not 
crash if we call it, somehow gtk-init-check()[1] call allows to avoid crash.
However I want to leave this fix as simple as it is now, since 
gdk_threads_init()[2] should be called prior to gtk_init_check(),
and it is unnecessaryfor a simple version check.

[1] https://developer.gnome.org/gtk2/stable/gtk2-General.html#gtk-init-check
[2] 
https://developer.gnome.org/gdk2/stable/gdk2-Threads.html#gdk-threads-init

--
Thanks,
Alexander.

On 07/17/2014 04:15 PM, Sergey Bylokhov wrote:
> Hi, Alexander.
> As far as I remember, we have a code, which closes this lib for the 
> usual usage of gtk look and feel. Looks like we never call it, but if 
> we call it it will cause the same crash? Can you investigate that? 
> Thanks.
>
> On 7/16/14 8:56 PM, Alexander Zvegintsev wrote:
>> Hello AWT team,
>>
>> please review the fix
>> http://cr.openjdk.java.net/~azvegint/jdk/9/8048289/00/
>> for the issue
>> https://bugs.openjdk.java.net/browse/JDK-8048289
>>
>> UIManager.getSystemLookAndFeelClassName() calls 
>> UNIXToolkit.isNativeGTKAvailable()
>> which loads gtk library, checks version, and closes library. Thread 
>> specific data key is created upon gtk dlopen,
>> but this key is not deleted at dlclose. This produces a crash at 
>> thread termination.
>>
>> So this fix is a workaround for the glib issue [1], it simply doesn't 
>> close library.
>> Simple case to reproduce this issue written on C is attached to [1].
>>
>> [1] https://bugzilla.gnome.org/show_bug.cgi?id=733065
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20140717/a3ad26aa/attachment.html>


More information about the awt-dev mailing list