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

"Locale" not thread-safe

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 8
    • 1.4.1, 7
    • core-libs
    • b19
    • x86
    • linux, windows_xp



      Name: rmT116609 Date: 01/24/2003


      FULL PRODUCT VERSION :
      java version "1.4.1_01"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
      Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)


      FULL OPERATING SYSTEM VERSION :
      Microsoft Windows XP [version 5.1.2600]


      A DESCRIPTION OF THE PROBLEM :
      java.util.Locale seems not to be thread safe, as I look at the source code.

      The static method getDefault() is not synchronized. The code is as follows:

      public static Locale getDefault() {
              // do not synchronize this method - see 4071298
              // it's OK if more than one default locale happens to be created
              if (defaultLocale == null) {
                  // ... do something ...
                  defaultLocale = new Locale(language, country, variant);
              }
              return defaultLocale;
          }

      This method seems to have been synchronized in the past, but the bug report 4071298 removed the "synchronized" modifier.

      The problem is that for multiprocessor machines, each processor having its own cache, the data in these caches are never synchronized with the main memory.
      The lack of a memory barrier, that is provided normally by the "synchronized" modifier, can make a thread read an incompletely initialized Locale instance referenced by the static private variable "defaultlocale".

      This problem is well explained in
      http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double.html and other documents about multithreading.

      I think this method must just be synchronized again.


      (Review ID: 179833)
      ======================================================================

            naoto Naoto Sato
            rmandalasunw Ranjith Mandala (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: