-
Bug
-
Resolution: Fixed
-
P3
-
hs14
-
b02
-
generic
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2173657 | 7 | Tom Rodriguez | P3 | Closed | Fixed | b49 |
JDK-2180483 | 6u18 | Tom Rodriguez | P3 | Closed | Fixed | b01 |
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
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
- backported by
-
JDK-2173657 Memory leak in CodeBuffer::create_patch_overflow
-
- Closed
-
-
JDK-2180483 Memory leak in CodeBuffer::create_patch_overflow
-
- Closed
-