leak: report alloc size mismatch

This commit is contained in:
cinap_lenrek 2015-02-26 22:33:03 +01:00
parent 098884981d
commit 1d2ce3583e

View file

@ -9,12 +9,21 @@ dumppool(p, sum)
complex Pool p; complex Pool p;
a = p.arenalist; a = p.arenalist;
allocsize = 0;
print("A: ", p.arenalist\A, "\n"); print("A: ", p.arenalist\A, "\n");
while a != 0 do { while a != 0 do {
complex Arena a; complex Arena a;
dumparena(a, sum); dumparena(a, sum);
a = a.down; a = a.down;
} }
if sum then {
emitsum();
}
if allocsize != p.curalloc then {
print("found alloc size mismatch ", allocsize, " != ", p.curalloc, "\n");
}
} }
defn defn
@ -91,6 +100,7 @@ dumpblock(addr, sum)
x = fmt(addr+sizeofBhdr, 'X'); x = fmt(addr+sizeofBhdr, 'X');
if addr.magic == ALLOC_MAGIC then { if addr.magic == ALLOC_MAGIC then {
allocsize = allocsize+a.size;
// for mallocalign() // for mallocalign()
while *x == ALIGN_MAGIC do { while *x == ALIGN_MAGIC do {
x = x + 4; x = x + 4;
@ -199,7 +209,6 @@ blocksummary()
{ {
print("==BLOCK BEGIN==\n"); print("==BLOCK BEGIN==\n");
dumppool(*mainmem, 1); dumppool(*mainmem, 1);
emitsum();
print("==BLOCK END==\n"); print("==BLOCK END==\n");
} }