From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Fri, 6 Mar 2015 08:37:07 -0800 To: 9fans@9fans.net Message-ID: <5deb4ebaa628252c1426ee4123f1b12b@lilly.quanstro.net> In-Reply-To: <4ded1a4925644d91062f08d7b30a57a2@quintile.net> References: <4ded1a4925644d91062f08d7b30a57a2@quintile.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] leak(1) Topicbox-Message-UUID: 486a15c4-ead9-11e9-9d60-3106f5b1d025 On Fri Mar 6 01:33:22 PST 2015, steve@quintile.net wrote: > I am getting an error from leak(1): > > :2: (error) mainmem used but not set > > Anyone seen such, understand, or even know where its coming from? i had to use some patches to acidleak to keep it from running out of memory on medium-sized heaps due to a pathological case in the pool allocator. (plus, linear allocation usually ends in tears): ; 9diff acidleak.c /n/sources/plan9/sys/src/cmd/aux/acidleak.c:202,213 - acidleak.c:202,211 p[Blinelen(&bio)-1] = '\0'; nf = tokenize(p, f, nelem(f)); if(nf >= 4 && strcmp(f[0], "data") == 0) { - if(ndata >= adata){ + if(ndata == adata){ if(adata == 0) adata = 4096; - else - adata += adata / 4; /* increase 25% */ - data = erealloc(data, adata * sizeof(Data)); + data = erealloc(data, (adata <<= 1)*sizeof(Data)); } data[ndata].addr = strtoul(f[1], nil, 0); data[ndata].val = strtoul(f[2], nil, 0); /n/sources/plan9/sys/src/cmd/aux/acidleak.c:215,228 - acidleak.c:213,223 data[ndata].b = 0; ndata++; } - if(nf >= 5 && - (strcmp(f[0], "block") == 0 || strcmp(f[0], "free") == 0)) { - if(nblock >= ablock){ + if(nf >= 5 && (strcmp(f[0], "block") == 0 || strcmp(f[0], "free") == 0)) { + if(nblock == ablock){ if(ablock == 0) ablock = 4096; - else - ablock += ablock / 4; /* increase 25% */ - block = erealloc(block, ablock * sizeof(Block)); + block = erealloc(block, (ablock <<= 1)*sizeof(Block)); } block[nblock].addr = strtoul(f[1], nil, 0); block[nblock].size = strtoul(f[2], nil, 0); - erik