Hi all,
  the attached patch removes all references to xmalloc-trace and sbrk.
The former is very rarely used, valgrind is preferred to trace allocations.
The latter is basically useless to detect memory usage on modern OSes which
use other means than brk(2) to obtain memory pages for the heap; it is
actually deprecated on some OSes such as Darwin.

Farm-build-tested.


-- 
    Francesco
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kin...@squid-cache.org-20140316124459-igg4zpgg98ppddpz
# target_branch: ../trunk
# testament_sha1: 2d2e28d22c9b8f832ccb6c128be66bfd754be08a
# timestamp: 2014-03-16 19:16:45 +0100
# base_revision_id: squ...@treenet.co.nz-20140316035245-\
#   4z0y12zr92i337y6
# 
# Begin patch
=== modified file 'compat/xalloc.cc'
--- compat/xalloc.cc	2012-07-02 12:14:07 +0000
+++ compat/xalloc.cc	2014-03-16 12:44:59 +0000
@@ -92,9 +92,6 @@
 #if XMALLOC_STATISTICS
     malloc_stat(sz * n);
 #endif
-#if XMALLOC_TRACE
-    xmalloc_show_trace(p, 1);
-#endif
 #if MEM_GEN_TRACE
     if (tracefp)
         fprintf(tracefp, "c:%u:%u:%p\n", (unsigned int) n, (unsigned int) sz, p);
@@ -133,9 +130,6 @@
 #if XMALLOC_STATISTICS
     malloc_stat(sz);
 #endif
-#if XMALLOC_TRACE
-    xmalloc_show_trace(p, 1);
-#endif
 #if MEM_GEN_TRACE
     if (tracefp)
         fprintf(tracefp, "m:%d:%p\n", sz, p);
@@ -149,9 +143,6 @@
 xrealloc(void *s, size_t sz)
 {
     PROF_start(xrealloc);
-#if XMALLOC_TRACE
-    xmalloc_show_trace(s, -1);
-#endif
 
     if (sz < 1)
         sz = 1;
@@ -182,9 +173,6 @@
 #if XMALLOC_STATISTICS
     malloc_stat(sz);
 #endif
-#if XMALLOC_TRACE
-    xmalloc_show_trace(p, 1);
-#endif
 #if MEM_GEN_TRACE
     if (tracefp)                /* new ptr, old ptr, new size */
         fprintf(tracefp, "r:%p:%p:%d\n", p, s, sz);
@@ -199,9 +187,6 @@
     void *s = const_cast<void *>(s_const);
 
     PROF_start(free_const);
-#if XMALLOC_TRACE
-    xmalloc_show_trace(s, -1);
-#endif
 
 #if XMALLOC_DEBUG
     check_free(s);

=== modified file 'configure.ac'
--- configure.ac	2014-03-16 03:08:55 +0000
+++ configure.ac	2014-03-16 12:44:59 +0000
@@ -459,18 +459,6 @@
 dnl   fi
 dnl ])
 
-dnl This is a developer only option.. developers know how to set defines
-dnl
-dnl AC_ARG_ENABLE(xmalloc-debug-trace,
-dnl [  --enable-xmalloc-debug-trace
-dnl                           Detailed trace of memory allocations],
-dnl [ if test "$enableval" = "yes" ; then
-dnl     AC_MSG_NOTICE([malloc debug trace enabled])
-dnl     AC_DEFINE(XMALLOC_TRACE,1,[Define to have a detailed trace of memory allocations])
-dnl     AC_DEFINE(XMALLOC_DEBUG,1)
-dnl   fi
-dnl ])
-
 AH_TEMPLATE(XMALLOC_STATISTICS,[Define to have malloc statistics])
 AC_ARG_ENABLE(xmalloc-statistics,
   AS_HELP_STRING([--enable-xmalloc-statistics],
@@ -3055,7 +3043,6 @@
 	res_init \
 	__res_init \
 	rint \
-	sbrk \
 	sched_getaffinity \
 	sched_setaffinity \
 	select \

=== modified file 'include/squid.h'
--- include/squid.h	2012-10-11 07:19:02 +0000
+++ include/squid.h	2014-03-16 12:44:59 +0000
@@ -103,11 +103,7 @@
 /*
  * Determine if this is a leak check build or standard
  */
-#if PURIFY
-#define LEAK_CHECK_MODE 1
-#elif WITH_VALGRIND
-#define LEAK_CHECK_MODE 1
-#elif XMALLOC_TRACE
+#if PURIFY || WITH_VALGRIND
 #define LEAK_CHECK_MODE 1
 #endif
 

=== modified file 'include/util.h'
--- include/util.h	2014-02-21 10:46:19 +0000
+++ include/util.h	2014-03-16 12:44:59 +0000
@@ -60,20 +60,6 @@
 #include "SquidNew.h"
 #endif
 
-#if XMALLOC_TRACE
-#define xmalloc(size) (xmalloc_func="xmalloc",xmalloc_line=__LINE__,xmalloc_file=__FILE__,xmalloc(size))
-#define xfree(ptr) (xmalloc_func="xfree",xmalloc_line=__LINE__,xmalloc_file=__FILE__,xfree(ptr))
-#define xrealloc(ptr,size) (xmalloc_func="xrealloc",xmalloc_line=__LINE__,xmalloc_file=__FILE__,xrealloc(ptr,size))
-#define xcalloc(n,size) (xmalloc_func="xcalloc",xmalloc_line=__LINE__,xmalloc_file=__FILE__,xcalloc(n,size))
-#define xstrdup(ptr) (xmalloc_func="xstrdup",xmalloc_line=__LINE__,xmalloc_file=__FILE__,xstrdup(ptr))
-extern int xmalloc_line;
-extern char *xmalloc_file;
-extern char *xmalloc_func;
-extern int xmalloc_trace;
-extern size_t xmalloc_total;
-extern void xmalloc_find_leaks(void);
-#endif
-
 SQUIDCEXTERN time_t parse_iso3307_time(const char *buf);
 
 SQUIDCEXTERN double xpercent(double part, double whole);

=== modified file 'lib/malloc_trace.cc'
--- lib/malloc_trace.cc	2014-02-21 10:46:19 +0000
+++ lib/malloc_trace.cc	2014-03-16 12:44:59 +0000
@@ -74,30 +74,11 @@
 
 #endif
 
-#if XMALLOC_TRACE
-char *xmalloc_file = "";
-int xmalloc_line = 0;
-char *xmalloc_func = "";
-static int xmalloc_count = 0;
-int xmalloc_trace = 0;		/* Enable with -m option */
-size_t xmalloc_total = 0;
-#undef xmalloc
-#undef xfree
-#undef xrealloc
-#undef xcalloc
-#undef xstrdup
-#endif
-
 #if XMALLOC_DEBUG
 #define DBG_ARRY_SZ (1<<11)
 #define DBG_ARRY_BKTS (1<<8)
 static void *(*malloc_ptrs)[DBG_ARRY_SZ];
 static int malloc_size[DBG_ARRY_BKTS][DBG_ARRY_SZ];
-#if XMALLOC_TRACE
-static char *malloc_file[DBG_ARRY_BKTS][DBG_ARRY_SZ];
-static short malloc_line[DBG_ARRY_BKTS][DBG_ARRY_SZ];
-static int malloc_count[DBG_ARRY_BKTS][DBG_ARRY_SZ];
-#endif
 static int dbg_initd = 0;
 
 #define DBG_HASH_BUCKET(ptr)   (((((int)ptr)>>4)+(((int)ptr)>>12)+(((int)ptr)>>20))&0xFF)
@@ -113,13 +94,6 @@
         for (I = 0; I < DBG_ARRY_SZ; ++I) {
             malloc_ptrs[B][I] = NULL;
             malloc_size[B][I] = 0;
-#if XMALLOC_TRACE
-
-            malloc_file[B][I] = NULL;
-            malloc_line[B][I] = 0;
-            malloc_count[B][I] = 0;
-#endif
-
         }
     }
 
@@ -137,19 +111,7 @@
             continue;
 
         malloc_ptrs[B][I] = NULL;
-
         malloc_size[B][I] = 0;
-
-#if XMALLOC_TRACE
-
-        malloc_file[B][I] = NULL;
-
-        malloc_line[B][I] = 0;
-
-        malloc_count[B][I] = 0;
-
-#endif
-
         break;
     }
 
@@ -196,19 +158,7 @@
             continue;
 
         malloc_ptrs[B][I] = p;
-
         malloc_size[B][I] = (int) sz;
-
-#if XMALLOC_TRACE
-
-        malloc_file[B][I] = xmalloc_file;
-
-        malloc_line[B][I] = xmalloc_line;
-
-        malloc_count[B][I] = xmalloc_count;
-
-#endif
-
         break;
     }
 
@@ -222,189 +172,3 @@
 
 #endif
 
-#if XMALLOC_TRACE && !HAVE_MALLOCBLKSIZE
-size_t
-xmallocblksize(void *p)
-{
-    int B, I;
-    B = DBG_HASH_BUCKET(p);
-
-    for (I = 0; I < DBG_ARRY_SZ; ++I) {
-        if (malloc_ptrs[B][I] == p)
-            return malloc_size[B][I];
-    }
-
-    return 0;
-}
-
-#endif
-
-#ifdef XMALLOC_TRACE
-static char *
-malloc_file_name(void *p)
-{
-    int B, I;
-    B = DBG_HASH_BUCKET(p);
-
-    for (I = 0; I < DBG_ARRY_SZ; ++I) {
-        if (malloc_ptrs[B][I] == p)
-            return malloc_file[B][I];
-    }
-
-    return 0;
-}
-
-int
-malloc_line_number(void *p)
-{
-    int B, I;
-    B = DBG_HASH_BUCKET(p);
-
-    for (I = 0; I < DBG_ARRY_SZ; ++I) {
-        if (malloc_ptrs[B][I] == p)
-            return malloc_line[B][I];
-    }
-
-    return 0;
-}
-
-int
-malloc_number(void *p)
-{
-    int B, I;
-    B = DBG_HASH_BUCKET(p);
-
-    for (I = 0; I < DBG_ARRY_SZ; ++I) {
-        if (malloc_ptrs[B][I] == p)
-            return malloc_count[B][I];
-    }
-
-    return 0;
-}
-
-static void
-xmalloc_show_trace(void *p, int sign)
-{
-    int statMemoryAccounted();
-    static size_t last_total = 0, last_accounted = 0, last_mallinfo = 0;
-    size_t accounted = statMemoryAccounted();
-    size_t mi = 0;
-    size_t sz;
-#if HAVE_MALLINFO
-
-    struct mallinfo mp = mallinfo();
-    mi = mp.uordblks + mp.usmblks + mp.hblkhd;
-#endif
-
-    sz = xmallocblksize(p) * sign;
-    xmalloc_total += sz;
-    xmalloc_count += sign > 0;
-
-    if (xmalloc_trace) {
-        fprintf(stderr, "%c%8p size=%5d/%d acc=%5d/%d mallinfo=%5d/%d %s:%d %s",
-                sign > 0 ? '+' : '-', p,
-                (int) xmalloc_total - last_total, (int) xmalloc_total,
-                (int) accounted - last_accounted, (int) accounted,
-                (int) mi - last_mallinfo, (int) mi,
-                xmalloc_file, xmalloc_line, xmalloc_func);
-
-        if (sign < 0)
-            fprintf(stderr, " (%d %s:%d)\n", malloc_number(p), malloc_file_name(p), malloc_line_number(p));
-        else
-            fprintf(stderr, " %d\n", xmalloc_count);
-    }
-
-    last_total = xmalloc_total;
-    last_accounted = accounted;
-    last_mallinfo = mi;
-}
-
-short malloc_refs[DBG_ARRY_BKTS][DBG_ARRY_SZ];
-#define XMALLOC_LEAK_ALIGN (4)
-static void
-xmalloc_scan_region(void *start, int size, int depth)
-{
-    int B, I;
-    char *ptr = start;
-    char *end = ptr + size - XMALLOC_LEAK_ALIGN;
-    static int sum = 0;
-
-    while (ptr <= end) {
-        void *p = *(void **) ptr;
-
-        if (p && p != start) {
-            B = DBG_HASH_BUCKET(p);
-
-            for (I = 0; I < DBG_ARRY_SZ; ++I) {
-                if (malloc_ptrs[B][I] == p) {
-                    if (!malloc_refs[B][I]++) {
-                        /* A new reference */
-                        fprintf(stderr, "%*s%p %s:%d size %d allocation %d\n",
-                                depth, "",
-                                malloc_ptrs[B][I], malloc_file[B][I],
-                                malloc_line[B][I], malloc_size[B][I],
-                                malloc_count[B][I]);
-                        sum += malloc_size[B][I];
-                        xmalloc_scan_region(malloc_ptrs[B][I], malloc_size[B][I], depth + 1);
-
-                        if (depth == 0) {
-                            if (sum != malloc_size[B][I])
-                                fprintf(stderr, "=== %d bytes\n", sum);
-
-                            sum = 0;
-                        }
-
-#if XMALLOC_SHOW_ALL_REFERENCES
-
-                    } else {
-                        /* We have already scanned this pointer... */
-                        fprintf(stderr, "%*s%p %s:%d size %d allocation %d ... (%d)\n",
-                                depth * 2, "",
-                                malloc_ptrs[B][I], malloc_file[B][I],
-                                malloc_line[B][I], malloc_size[B][I],
-                                malloc_count[B][I], malloc_refs[B][I]);
-#endif
-
-                    }
-                }
-            }
-        }
-
-        ptr += XMALLOC_LEAK_ALIGN;
-    }
-}
-
-void
-xmalloc_find_leaks(void)
-{
-    int B, I;
-    int leak_sum = 0;
-
-    extern void _etext;
-    fprintf(stderr, "----- Memory map ----\n");
-    xmalloc_scan_region(&_etext, (void *) sbrk(0) - (void *) &_etext, 0);
-
-    for (B = 0; B < DBG_ARRY_BKTS; ++B) {
-        for (I = 0; I < DBG_ARRY_SZ; ++I) {
-            if (malloc_ptrs[B][I] && malloc_refs[B][I] == 0) {
-                /* Found a leak... */
-                fprintf(stderr, "Leak found: %p", malloc_ptrs[B][I]);
-                fprintf(stderr, " %s", malloc_file[B][I]);
-                fprintf(stderr, ":%d", malloc_line[B][I]);
-                fprintf(stderr, " size %d", malloc_size[B][I]);
-                fprintf(stderr, " allocation %d\n", malloc_count[B][I]);
-                leak_sum += malloc_size[B][I];
-            }
-        }
-    }
-
-    if (leak_sum) {
-        fprintf(stderr, "Total leaked memory: %d\n", leak_sum);
-    } else {
-        fprintf(stderr, "No memory leaks detected\n");
-    }
-
-    fprintf(stderr, "----------------------\n");
-}
-
-#endif /* XMALLOC_TRACE */

=== modified file 'src/globals.h'
--- src/globals.h	2014-02-21 10:46:19 +0000
+++ src/globals.h	2014-03-16 12:44:59 +0000
@@ -122,9 +122,6 @@
 extern char *WIN32_Service_Command_Line; /* NULL */
 extern unsigned int WIN32_run_mode;     /* _WIN_SQUID_RUN_MODE_INTERACTIVE */
 #endif
-#if HAVE_SBRK
-extern void *sbrk_start;	/* 0 */
-#endif
 
 extern int ssl_ex_index_server;	/* -1 */
 extern int ssl_ctx_ex_index_dont_verify_domain; /* -1 */

=== modified file 'src/main.cc'
--- src/main.cc	2014-02-21 16:14:05 +0000
+++ src/main.cc	2014-03-16 12:44:59 +0000
@@ -501,13 +501,7 @@
                 fatal("Need to add -DMALLOC_DBG when compiling to use -mX option");
 #endif
 
-            } else {
-#if XMALLOC_TRACE
-                xmalloc_trace = !xmalloc_trace;
-#else
-                fatal("Need to configure --enable-xmalloc-debug-trace to use -m option");
-#endif
-            }
+            } 
             break;
 
         case 'n':
@@ -1300,10 +1294,6 @@
 {
     ConfigureCurrentKid(argv[0]);
 
-#if HAVE_SBRK
-    sbrk_start = sbrk(0);
-#endif
-
     Debug::parseOptions(NULL);
     debug_log = stderr;
 
@@ -1922,15 +1912,6 @@
     mimeFreeMemory();
     errorClean();
 #endif
-#if !XMALLOC_TRACE
-
-    if (opt_no_daemon) {
-        file_close(0);
-        file_close(1);
-        file_close(2);
-    }
-
-#endif
     // clear StoreController
     Store::Root(NULL);
 
@@ -1942,13 +1923,6 @@
 
     RunRegisteredHere(RegisteredRunner::finishShutdown);
 
-#if XMALLOC_TRACE
-
-    xmalloc_find_leaks();
-
-    debugs(1, DBG_CRITICAL, "Memory used after shutdown: " << xmalloc_total);
-
-#endif
 #if MEM_GEN_TRACE
 
     log_trace_done();

=== modified file 'src/mgr/InfoAction.cc'
--- src/mgr/InfoAction.cc	2013-10-25 00:13:46 +0000
+++ src/mgr/InfoAction.cc	2014-03-16 12:44:59 +0000
@@ -81,9 +81,6 @@
     cpu_usage += stats.cpu_usage;
     cpu_usage5 += stats.cpu_usage5;
     cpu_usage60 += stats.cpu_usage60;
-#if HAVE_SBRK
-    proc_data_seg += stats.proc_data_seg;
-#endif
     maxrss += stats.maxrss;
     page_faults += stats.page_faults;
 #if HAVE_MSTATS && HAVE_GNUMALLOC_H
@@ -106,8 +103,8 @@
     mp_uordbytes += stats.mp_uordbytes;
     mp_allocated += stats.mp_allocated;
     mp_treeoverhead += stats.mp_treeoverhead;
-#endif
-#endif
+#endif /* HAVE_STRUCT_MALLINFO_MXFAST */
+#endif /* HAVE_MALLINFO && HAVE_STRUCT_MALLINFO */
     total_accounted += stats.total_accounted;
 #if !(HAVE_MSTATS && HAVE_GNUMALLOC_H) && HAVE_MALLINFO && HAVE_STRUCT_MALLINFO
     mem_pool_allocated += stats.mem_pool_allocated;

=== modified file 'src/mgr/InfoAction.h'
--- src/mgr/InfoAction.h	2013-09-27 16:06:15 +0000
+++ src/mgr/InfoAction.h	2014-03-16 12:44:59 +0000
@@ -68,9 +68,6 @@
     double cpu_usage;
     double cpu_usage5;
     double cpu_usage60;
-#if HAVE_SBRK
-    double proc_data_seg;
-#endif
     double maxrss;
     double page_faults;
 #if HAVE_MSTATS && HAVE_GNUMALLOC_H
@@ -93,8 +90,8 @@
     double mp_uordbytes;
     double mp_allocated;
     double mp_treeoverhead;
-#endif
-#endif
+#endif /* HAVE_STRUCT_MALLINFO_MXFAST */
+#endif /* HAVE_MALLINFO && HAVE_STRUCT_MALLINFO */
     double total_accounted;
 #if !(HAVE_MSTATS && HAVE_GNUMALLOC_H) && HAVE_MALLINFO && HAVE_STRUCT_MALLINFO
     double mem_pool_allocated;

=== modified file 'src/stat.cc'
--- src/stat.cc	2014-01-24 01:57:15 +0000
+++ src/stat.cc	2014-03-16 12:44:59 +0000
@@ -588,12 +588,6 @@
     stats.cpu_usage5 = statCPUUsage(5);
     stats.cpu_usage60 = statCPUUsage(60);
 
-#if HAVE_SBRK
-
-    stats.proc_data_seg = ((char *) sbrk(0) - (char *) sbrk_start);
-
-#endif
-
     stats.maxrss = rusage_maxrss(&rusage);
 
     stats.page_faults = rusage_pagefaults(&rusage);
@@ -814,13 +808,6 @@
     storeAppendPrintf(sentry, "\tCPU Usage, 60 minute avg:\t%.2f%%\n",
                       stats.cpu_usage60);
 
-#if HAVE_SBRK
-
-    storeAppendPrintf(sentry, "\tProcess Data Segment Size via sbrk(): %.0f KB\n",
-                      stats.proc_data_seg / 1024);
-
-#endif
-
     storeAppendPrintf(sentry, "\tMaximum Resident Size: %.0f KB\n",
                       stats.maxrss);
 
@@ -1461,18 +1448,12 @@
     if (Config.warnings.high_memory) {
         size_t i = 0;
 #if HAVE_MSTATS && HAVE_GNUMALLOC_H
-
         struct mstats ms = mstats();
         i = ms.bytes_total;
 #elif HAVE_MALLINFO && HAVE_STRUCT_MALLINFO
-
         struct mallinfo mp = mallinfo();
         i = mp.arena;
-#elif HAVE_SBRK
-
-        i = (size_t) ((char *) sbrk(0) - (char *) sbrk_start);
 #endif
-
         if (Config.warnings.high_memory < i)
             debugs(18, DBG_CRITICAL, "WARNING: Memory usage at " << ((unsigned long int)(i >> 20)) << " MB");
     }

# Begin bundle
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
wNe9BFnyKzxG+AplMQK0fjtf+LuSKcKEhezOcdA=

Reply via email to