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

Memory leak in MethodHandles::verify_ref_kind function(fastdebug build)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • 9
    • 9
    • hotspot
    • None

      MethodHandles::verify_ref_kind function defined in following modules under '#ifdef ASSERT', i.e. exits only in debug build:
      hotspot/src/closed/cpu/arm/vm/methodHandles_arm.cpp
      hotspot/src/cpu/aarch64/vm/methodHandles_aarch64.cpp
      hotspot/src/cpu/x86/vm/methodHandles_x86.cpp
      hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
      hotspot/src/cpu/ppc/vm/methodHandles_ppc.cpp

      MethodHandles::verify_ref_kind contains memory leak. Here is a code from src/cpu/x86/vm/methodHandles_x86.cpp module(other are similar):
      void MethodHandles::verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) {
      ...
        { char* buf = NEW_C_HEAP_ARRAY(char, 100, mtInternal);
          jio_snprintf(buf, 100, "verify_ref_kind expected %x", ref_kind);
          if (ref_kind == JVM_REF_invokeVirtual ||
              ref_kind == JVM_REF_invokeSpecial)
            // could do this for all ref_kinds, but would explode assembly code size
            trace_method_handle(_masm, buf);
          __ STOP(buf);
        }
      ...
      }

      Memory for 'buf' is allocated by NEW_C_HEAP_ARRAY but not freed after '__ STOP(buf);'.

            ddmitriev Dmitry Dmitriev
            ddmitriev Dmitry Dmitriev
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: