hush: add commented-out debug printouts in "memleak" built-in
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 3 Oct 2016 15:42:53 +0000 (17:42 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 3 Oct 2016 15:42:53 +0000 (17:42 +0200)
Allocation addresses of malloc() are jittery,
thought I had a mem leak in hush, but it was malloc variability.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/appletlib.c
shell/hush.c

index f760af2cbfb7c9834323af1c7e74e42ea7de8ce7..2d01a3ae7618dac572f326ac23fd9596c6f16e5c 100644 (file)
@@ -942,6 +942,14 @@ int main(int argc UNUSED_PARAM, char **argv)
         */
        mallopt(M_MMAP_THRESHOLD, 32 * 1024 - 256);
 #endif
+#if 0 /*def M_TOP_PAD*/
+       /* When the program break is increased, then M_TOP_PAD bytes are added
+        * to the sbrk(2) request. When the heap is trimmed because of free(3),
+        * this much free space is preserved at the top of the heap.
+        * glibc default seems to be way too big: 128k, but need to verify.
+        */
+       mallopt(M_TOP_PAD, 8 * 1024);
+#endif
 
 #if !BB_MMU
        /* NOMMU re-exec trick sets high-order bit in first byte of name */
index 668b1f2b7b2fcf12e9e4259934539ad04808d06a..9b51f389e385b7bcd9776788bec4fc40cd179ce1 100644 (file)
@@ -9284,6 +9284,15 @@ static int FAST_FUNC builtin_memleak(char **argv UNUSED_PARAM)
        if (l < (unsigned long)p) l = (unsigned long)p;
        free(p);
 
+
+# if 0  /* debug */
+       {
+               struct mallinfo mi = mallinfo();
+               printf("top alloc:0x%lx malloced:%d+%d=%d\n", l,
+                       mi.arena, mi.hblkhd, mi.arena + mi.hblkhd);
+       }
+# endif
+
        if (!G.memleak_value)
                G.memleak_value = l;