Hello,

Please review the fix for the issue: https://bugs.openjdk.java.net/browse/JDK-7059886 The webrev is available here: http://cr.openjdk.java.net/~serb/alexz/7059886/webrev.00/

For old versions of GLib (< 2.24) calling g_thread_init () [1] multiple times will crash an application.
There are two ways to find out if g_thread_init() has been called:
g_thread_supported ()[2] and g_thread_get_initialized ()[3]

g_thread_supported () is a macro, so we cannot load it with dlsym
g_thread_get_initialized () was introduced in 2.20, but we have to support versions < 2.20

Currently in JDK we have an internal flag which protects us from such multiple calls, but at least we
have Java FX which does not have access to this flag.

The idea of the fix it to make single entry point for everyone who is about to call g_thread_init () to
check if it has been called.

Should we bring back g_thread_get_initialized () check for GLib >= 2.20 for safety?

[1] https://developer.gnome.org/glib/stable/glib-Deprecated-Thread-APIs.html#g-thread-init [2] https://developer.gnome.org/glib/stable/glib-Deprecated-Thread-APIs.html#g-thread-supported [3] https://developer.gnome.org/glib/stable/glib-Deprecated-Thread-APIs.html#g-thread-get-initialized

--
--
Thanks,
Alexander.

Reply via email to