Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7188755

Crash due to missing synchronization on gconf_client in DefaultProxySelector.c

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: 6u10, 6u20, 7
    • Fix Version/s: 8
    • Component/s: core-libs
    • Subcomponent:
    • Resolved In Build:
      b55
    • CPU:
      generic, unknown, x86
    • OS:
      generic, linux, linux_ubuntu
    • Verification:
      Verified

      Backports

        Description

        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.

        see discussion on jdk7u-dev, and subsequently on net-dev mailing lists:

        http://mail.openjdk.java.net/pipermail/jdk7u-dev/2012-August/003911.html
        http://mail.openjdk.java.net/pipermail/net-dev/2012-August/004610.html

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  chegar Chris Hegarty
                  Reporter:
                  chegar Chris Hegarty
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Imported:
                    Indexed: