[tor-commits] [tor/maint-0.4.4] Remove mallinfo() from codebase

dgoulet at torproject.org dgoulet at torproject.org
Mon Mar 1 13:37:13 UTC 2021


commit ad4f87ed3f2126814e42565e2d815e37f99f7c1f
Author: David Goulet <dgoulet at torproject.org>
Date:   Tue Feb 23 11:02:33 2021 -0500

    Remove mallinfo() from codebase
    
    Now deprecated in libc >= 2.33
    
    Closes #40309
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/ticket40309       |  3 +++
 configure.ac              |  1 -
 src/app/main/main.c       |  1 -
 src/lib/meminfo/meminfo.c | 23 ---------------------
 src/lib/meminfo/meminfo.h |  1 -
 src/test/test_util.c      | 52 -----------------------------------------------
 6 files changed, 3 insertions(+), 78 deletions(-)

diff --git a/changes/ticket40309 b/changes/ticket40309
new file mode 100644
index 0000000000..087ac36a4f
--- /dev/null
+++ b/changes/ticket40309
@@ -0,0 +1,3 @@
+  o New system requirements (mallinfo() deprecated):
+    - Remove mallinfo() usage entirely. Libc 2.33+ now deprecates it. Closes
+      ticket 40309.
diff --git a/configure.ac b/configure.ac
index 03c80d73b5..db5bfee202 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2038,7 +2038,6 @@ AS_CASE([$malloc],
 
   [system], [
      # handle this later, including the jemalloc fallback
-    AC_CHECK_FUNCS(mallinfo)
   ],
 
   [AC_MSG_ERROR([--with-malloc=`$with_malloc' not supported, see --help])
diff --git a/src/app/main/main.c b/src/app/main/main.c
index d7d36bff4e..fd166638db 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -319,7 +319,6 @@ dumpmemusage(int severity)
   dump_routerlist_mem_usage(severity);
   dump_cell_pool_usage(severity);
   dump_dns_mem_usage(severity);
-  tor_log_mallinfo(severity);
 }
 
 /** Write all statistics to the log, with log level <b>severity</b>. Called
diff --git a/src/lib/meminfo/meminfo.c b/src/lib/meminfo/meminfo.c
index 0c5e0ed665..b7d991e410 100644
--- a/src/lib/meminfo/meminfo.c
+++ b/src/lib/meminfo/meminfo.c
@@ -37,29 +37,6 @@
 #include <sys/sysctl.h>
 #endif
 
-DISABLE_GCC_WARNING("-Waggregate-return")
-/** Call the platform malloc info function, and dump the results to the log at
- * level <b>severity</b>.  If no such function exists, do nothing. */
-void
-tor_log_mallinfo(int severity)
-{
-#ifdef HAVE_MALLINFO
-  struct mallinfo mi;
-  memset(&mi, 0, sizeof(mi));
-  mi = mallinfo();
-  tor_log(severity, LD_MM,
-      "mallinfo() said: arena=%d, ordblks=%d, smblks=%d, hblks=%d, "
-      "hblkhd=%d, usmblks=%d, fsmblks=%d, uordblks=%d, fordblks=%d, "
-      "keepcost=%d",
-      mi.arena, mi.ordblks, mi.smblks, mi.hblks,
-      mi.hblkhd, mi.usmblks, mi.fsmblks, mi.uordblks, mi.fordblks,
-      mi.keepcost);
-#else /* !defined(HAVE_MALLINFO) */
-  (void)severity;
-#endif /* defined(HAVE_MALLINFO) */
-}
-ENABLE_GCC_WARNING("-Waggregate-return")
-
 #if defined(HW_PHYSMEM64)
 /* OpenBSD and NetBSD define this */
 #define INT64_HW_MEM HW_PHYSMEM64
diff --git a/src/lib/meminfo/meminfo.h b/src/lib/meminfo/meminfo.h
index a5ebfd5a6a..36a85c133d 100644
--- a/src/lib/meminfo/meminfo.h
+++ b/src/lib/meminfo/meminfo.h
@@ -15,7 +15,6 @@
 #include "lib/testsupport/testsupport.h"
 #include <stddef.h>
 
-void tor_log_mallinfo(int severity);
 MOCK_DECL(int, get_total_system_memory, (size_t *mem_out));
 
 #endif /* !defined(TOR_MEMINFO_H) */
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 2aee07a26a..00626c7ec0 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -6255,57 +6255,6 @@ test_util_get_unquoted_path(void *arg)
   tor_free(r);
 }
 
-static void
-test_util_log_mallinfo(void *arg)
-{
-  (void)arg;
-  char *log1 = NULL, *log2 = NULL, *mem = NULL;
-#ifdef HAVE_MALLINFO
-  setup_capture_of_logs(LOG_INFO);
-  tor_log_mallinfo(LOG_INFO);
-  expect_single_log_msg_containing("mallinfo() said: ");
-  mock_saved_log_entry_t *lg = smartlist_get(mock_saved_logs(), 0);
-  log1 = tor_strdup(lg->generated_msg);
-
-  mock_clean_saved_logs();
-  mem = tor_malloc(8192);
-  tor_log_mallinfo(LOG_INFO);
-  expect_single_log_msg_containing("mallinfo() said: ");
-  lg = smartlist_get(mock_saved_logs(), 0);
-  log2 = tor_strdup(lg->generated_msg);
-
-  /* Make sure that the amount of used memory increased. */
-  const char *used1 = strstr(log1, "uordblks=");
-  const char *used2 = strstr(log2, "uordblks=");
-  tt_assert(used1);
-  tt_assert(used2);
-  used1 += strlen("uordblks=");
-  used2 += strlen("uordblks=");
-
-  int ok1, ok2;
-  char *next1 = NULL, *next2 = NULL;
-  uint64_t mem1 = tor_parse_uint64(used1, 10, 0, UINT64_MAX, &ok1, &next1);
-  uint64_t mem2 = tor_parse_uint64(used2, 10, 0, UINT64_MAX, &ok2, &next2);
-  tt_assert(ok1);
-  tt_assert(ok2);
-  tt_assert(next1);
-  tt_assert(next2);
-  if (mem2 == 0) {
-    /* This is a fake mallinfo that doesn't actually fill in its outputs. */
-    tt_u64_op(mem1, OP_EQ, 0);
-  } else {
-    tt_u64_op(mem1, OP_LT, mem2);
-  }
-#else /* !defined(HAVE_MALLINFO) */
-  tt_skip();
-#endif /* defined(HAVE_MALLINFO) */
- done:
-  teardown_capture_of_logs();
-  tor_free(log1);
-  tor_free(log2);
-  tor_free(mem);
-}
-
 static void
 test_util_map_anon(void *arg)
 {
@@ -6573,7 +6522,6 @@ struct testcase_t util_tests[] = {
   UTIL_TEST(monotonic_time_add_msec, 0),
   UTIL_TEST(htonll, 0),
   UTIL_TEST(get_unquoted_path, 0),
-  UTIL_TEST(log_mallinfo, 0),
   UTIL_TEST(map_anon, 0),
   UTIL_TEST(map_anon_nofork, 0),
   END_OF_TESTCASES





More information about the tor-commits mailing list