Crash due to missing synchronization on 'gconf_client' in 'jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c'
Chris Hegarty
chris.hegarty at oracle.com
Fri Aug 3 04:37:30 PDT 2012
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 at 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,
>>>>
>>
>
More information about the net-dev
mailing list