commit 296a557bfc5769617da53eee5a8670e2428ca458 Author: David Goulet dgoulet@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@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 c4fbc3ff7e..44f96b6616 100644 --- a/configure.ac +++ b/configure.ac @@ -1937,7 +1937,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 67f2181cd5..8a5d4cfd15 100644 --- a/src/app/main/main.c +++ b/src/app/main/main.c @@ -316,7 +316,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 f4fa45167e..bc3eef8419 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(aggregate-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(aggregate-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 2d64e1ab06..6f29fe0ea8 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 diff --git a/src/test/test_util.c b/src/test/test_util.c index 06ea8191a2..7f07370998 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -6394,57 +6394,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 - tt_skip(); -#endif - done: - teardown_capture_of_logs(); - tor_free(log1); - tor_free(log2); - tor_free(mem); -} - #define UTIL_LEGACY(name) \ { #name, test_util_ ## name , 0, NULL, NULL }
@@ -6584,6 +6533,5 @@ 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), END_OF_TESTCASES };