From 1d2ce3583ec377f16a1f801f624344de99bc9ddc Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 26 Feb 2015 22:33:03 +0100 Subject: leak: report alloc size mismatch --- sys/lib/acid/leak | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sys/lib/acid') diff --git a/sys/lib/acid/leak b/sys/lib/acid/leak index e03d34d01..33b8f68b7 100644 --- a/sys/lib/acid/leak +++ b/sys/lib/acid/leak @@ -9,12 +9,21 @@ dumppool(p, sum) complex Pool p; a = p.arenalist; + allocsize = 0; + print("A: ", p.arenalist\A, "\n"); while a != 0 do { complex Arena a; dumparena(a, sum); a = a.down; } + if sum then { + emitsum(); + } + + if allocsize != p.curalloc then { + print("found alloc size mismatch ", allocsize, " != ", p.curalloc, "\n"); + } } defn @@ -91,6 +100,7 @@ dumpblock(addr, sum) x = fmt(addr+sizeofBhdr, 'X'); if addr.magic == ALLOC_MAGIC then { + allocsize = allocsize+a.size; // for mallocalign() while *x == ALIGN_MAGIC do { x = x + 4; @@ -199,7 +209,6 @@ blocksummary() { print("==BLOCK BEGIN==\n"); dumppool(*mainmem, 1); - emitsum(); print("==BLOCK END==\n"); } -- cgit v1.2.3