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

Memory leak in CodeBuffer::create_patch_overflow

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • hs15
    • hs14
    • hotspot
    • b02
    • generic
    • generic
    • Verified

        libumem reports a number of memory leaks in functions using GrowableArray<int>*CodeBuffer::create_patch_overflow

        It appears that there are potential problems: _overflow_arena is never deleted and objects created in the arena is neither.

        GrowableArray<int>* CodeBuffer::create_patch_overflow() {
          if (_overflow_arena == NULL) {
            _overflow_arena = new Arena();
          }
          return new (_overflow_arena) GrowableArray<int>(_overflow_arena, 8, 0, 0);
        }

        Examples:
        umem_alloc_24 leak: 7 buffers, 24 bytes each, 168 bytes total
                    ADDR BUFADDR TIMESTAMP THREAD
                                    CACHE LASTLOG CONTENTS
                 81fde18 81f9cb8 a921a03bd071 7
                                  806a710 0 0
                         libumem.so.1`umem_cache_alloc_debug+0x16c
                         libumem.so.1`umem_cache_alloc+0x15c
                         libumem.so.1`umem_alloc+0x3f
                         libumem.so.1`malloc+0x23
                         libjvm.so`void*os::malloc+0x2e
                         libjvm.so`void*CHeapObj::operator new+0x11
                         libjvm.so`GrowableArray<int>*CodeBuffer::create_patch_overflow+0x2c
                         libjvm.so`void Label::add_patch_at+0x32
                         libjvm.so`void Assembler::jmp+0x79
                         libjvm.so`void LIR_Assembler::emit_opBranch+0x15c
                         libjvm.so`void LIR_OpBranch::emit_code+0x21
                         libjvm.so`void LIR_Assembler::emit_lir_list+0x74
                         libjvm.so`void LIR_Assembler::emit_block+0x5c
                         libjvm.so`void LIR_Assembler::emit_code+0x43
                         libjvm.so`int Compilation::emit_code_body+0xad

        umem_alloc_1152 leak: 1 buffer, 1152 bytes
                    ADDR BUFADDR TIMESTAMP THREAD
                                    CACHE LASTLOG CONTENTS
                 808c5f0 808ecc0 a9219b97c647 2
                                  8075a90 0 0
                         libumem.so.1`umem_cache_alloc_debug+0x16c
                         libumem.so.1`umem_cache_alloc+0x15c
                         libumem.so.1`umem_alloc+0x3f
                         libumem.so.1`malloc+0x23
                         libjvm.so`void*os::malloc+0x2e
                         libjvm.so`void*Chunk::operator new+0x62
                         libjvm.so`Arena::Arena #Nvariant 1+0x13
                         libjvm.so`GrowableArray<int>*CodeBuffer::create_patch_overflow+0x3e
                         libjvm.so`void Label::add_patch_at+0x32
                         libjvm.so`void Assembler::jcc+0xff
                         libjvm.so`void InterpreterMacroAssembler::lock_object+0x673
                         libjvm.so`void InterpreterGenerator::lock_method+0x541
                         libjvm.so`unsigned char*InterpreterGenerator::generate_normal_entry+0x7b6
                         libjvm.so`unsigned char*AbstractInterpreterGenerator::generate_method_entry+0xcc
                         libjvm.so`void TemplateInterpreterGenerator::generate_all+0x1fe7

              never Tom Rodriguez
              nhaustov Nicolay Haustov (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: