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

Property argument processing leaks memory

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • 10
    • hs21
    • hotspot
    • None
    • generic
    • generic

      From Roger Hoover at Apple

      I recently fixed a bug in Apple's Java SE 6 hotspot introduced by merging 6u25, and since
      open jdk7 has the same code ....

      Back in 2005, Apple's performance team forced us to fix all memory leaks in Java. One of
      these fixes was to argument processing at the end of bool Arguments::add_property(const
      char* prop):

      --- Hotspot/trunk/src/share/vm/runtime/arguments.cpp
      +++ Hotspot/trunk/src/share/vm/runtime/arguments.cpp
      @@ -813,4 +813,8 @@
         // Create new property and add at the end of the list
         PropertyList_unique_add(&_system_properties, key, value);
      + FreeHeap(key);
      + if (eq != NULL) {
      + FreeHeap(value);
      + }
         return true;
       }

      Unfortunately, the hotspot in the 6u25 update makes a change that relies upon this leak.
      (Not that PropertyList_unique_add copies key and value):
      @@ -927,9 +992,7 @@
         } else if (strcmp(key, "sun.java.command") == 0) {
           _java_command = value;

      - // don't add this property to the properties exposed to the java application
      - FreeHeap(key);
      - return true;
      + // Record value in Arguments, but let it get passed to Java.
         } else if (strcmp(key, "sun.jva.launcher.pid") == 0) {
           // launcher.pid property is private and is processed
           // in process_sun_java_launcher_properties();

      I changed the apple version to allocate new space for _java_command, but in jdk7 all
      args that fall through to the end lead except for sun.java.command=command.

            Unassigned Unassigned
            phh Paul Hohensee
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: