Crash due to missing synchronization on 'gconf_client' in 'jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c'
Andrew Hughes
ahughes at redhat.com
Thu Aug 2 08:47:28 PDT 2012
----- 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.
> 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,
> >>
>
--
Andrew :)
Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)
PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07
More information about the net-dev
mailing list