On 02/08/12 16:47, Andrew Hughes wrote:
----- Original Message -----
Thanks for the cross post David. Yes, net-dev is the best place to
discuss this issue ( bcc'ing off jdk7u-dev ).

Thanks for reporting this issue Christian. I haven't looked at the
proposed patch yet, but I agree we may want to simplify this if
possible
( handling the synchronization at the Java level ). We also need to
add
support for gnome3 system proxies in the near future. We need to
ensure
we don't further complicate that.


We already have support for GNOME3 system proxies (now actually
at the Glib level) in IcedTea and I intend to post an upstream version
of this in the next few weeks.

This would be great Andrew. It's been on my todo list for a while now. I look forward to this contribution.

-Chris.


I filed CR 7188755: "Crash due to missing synchronization on
gconf_client in DefaultProxySelector.c", to track this issue.

-Chris.



On 02/08/12 15:44, David Holmes wrote:
Hi Christian,

Probably best to discuss this on the net-dev@openjdk.java.net list
(cc'd).

Two comments from me (I'm not on net-dev):

1. CHECK_NULL does a return so you will be leaving the monitor
locked if
you encounter any nulls.

2. Is it simpler to add synchronization at the Java level? (I don't
know
how this code is used)

David Holmes

On 2/08/2012 8:54 PM, Christian Schulte wrote:
Hi,

using the system property 'java.net.useSystemProxies', JDK 7
crashes on
OpenBSD 5.2.

$ /usr/local/jre-1.7.0/bin/java -version
openjdk version "1.7.0_03"
OpenJDK Runtime Environment (build 1.7.0_03-b04)
OpenJDK Server VM (build 22.1-b02, mixed mode)

$ /usr/local/jre-1.7.0/bin/java -cp . Crash
2538: assertion failed "allocator->lock_loc == NULL" file
"/usr/ports/pobj/dbus-1.6.2/dbus-1.6.2/dbus/dbus-dataslot.c" line
79
function _dbus_data_slot_allocator_alloc
2538: assertion failed "allocator->lock_loc == NULL" file
"/usr/ports/pobj/dbus-1.6.2/dbus-1.6.2/dbus/dbus-dataslot.c" line
79
function _dbus_data_slot_allocator_alloc
2538: assertion failed "allocator->lock_loc == NULL" file
"/usr/ports/pobj/dbus-1.6.2/dbus-1.6.2/dbus/dbus-dataslot.c" line
79
function _dbus_data_slot_allocator_alloc
2538: assertion failed "allocator->lock_loc == NULL" file
"/usr/ports/pobj/dbus-1.6.2/dbus-1.6.2/dbus/dbus-dataslot.c" line
79
function _dbus_data_slot_allocator_alloc
D-Bus not compiled with backtrace support so unable to print a
backtrace
D-Bus not compiled with backtrace support so unable to print a
backtrace

$ /usr/local/jre-1.7.0/bin/java -cp . Crash
27421: assertion failed "!(connection)->have_connection_lock" file
"/usr/ports/pobj/dbus-1.6.2/dbus-1.6.2/dbus/dbus-connection.c"
line 1133
function _dbus_connection_acquire_io_path
D-Bus not compiled with backtrace support so unable to print a
backtrace
Abort trap (core dumped)

Looking at
'openjdk/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c',
there is a 'static void* gconf_client' which is initialized by
calling
'gconf_client_get_default' from 'libgconf-2'. Uses of that client
are
not protected against concurrent accesses by multiple threads
although
that gconf client is not thread-safe. Trying to add some
protection
myself resulted in the attached patch. Rebuilding JDK 1.7 with
this
patch applied, the 'gconf'/'dbus' related crashes no longer
happen.

Regards,



Reply via email to