mem0mem.c:
Add more diagnostic code to cath possible memory corruption
This commit is contained in:
parent
8a7ecfb9e0
commit
6202aa7c8e
@ -50,7 +50,7 @@ of the blocks stay the same. An exception is, of course, the case
|
|||||||
where the caller requests a memory buffer whose size is
|
where the caller requests a memory buffer whose size is
|
||||||
bigger than the threshold. In that case a block big enough must
|
bigger than the threshold. In that case a block big enough must
|
||||||
be allocated.
|
be allocated.
|
||||||
|
|
||||||
The heap is physically arranged so that if the current block
|
The heap is physically arranged so that if the current block
|
||||||
becomes full, a new block is allocated and always inserted in the
|
becomes full, a new block is allocated and always inserted in the
|
||||||
chain of blocks as the last block.
|
chain of blocks as the last block.
|
||||||
@ -119,6 +119,10 @@ mem_heap_create_block(
|
|||||||
ut_ad((type == MEM_HEAP_DYNAMIC) || (type == MEM_HEAP_BUFFER)
|
ut_ad((type == MEM_HEAP_DYNAMIC) || (type == MEM_HEAP_BUFFER)
|
||||||
|| (type == MEM_HEAP_BUFFER + MEM_HEAP_BTR_SEARCH));
|
|| (type == MEM_HEAP_BUFFER + MEM_HEAP_BTR_SEARCH));
|
||||||
|
|
||||||
|
if (heap && heap->magic_n != MEM_BLOCK_MAGIC_N) {
|
||||||
|
mem_analyze_corruption((byte*)heap);
|
||||||
|
}
|
||||||
|
|
||||||
/* In dynamic allocation, calculate the size: block header + data. */
|
/* In dynamic allocation, calculate the size: block header + data. */
|
||||||
|
|
||||||
if (init_block != NULL) {
|
if (init_block != NULL) {
|
||||||
@ -251,6 +255,10 @@ mem_heap_block_free(
|
|||||||
ulint len;
|
ulint len;
|
||||||
ibool init_block;
|
ibool init_block;
|
||||||
|
|
||||||
|
if (block->magic_n != MEM_BLOCK_MAGIC_N) {
|
||||||
|
mem_analyze_corruption((byte*)block);
|
||||||
|
}
|
||||||
|
|
||||||
UT_LIST_REMOVE(list, heap->base, block);
|
UT_LIST_REMOVE(list, heap->base, block);
|
||||||
|
|
||||||
type = heap->type;
|
type = heap->type;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user