commit ad4f87ed3f2126814e42565e2d815e37f99f7c1f
Author: David Goulet <dgoulet(a)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(a)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