public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug malloc/28015] New: add tunables for MALLOC_DEBUG
@ 2021-06-26 10:38 wangxuszcn at foxmail dot com
2024-05-07 17:43 ` [Bug malloc/28015] " adhemerval.zanella at linaro dot org
0 siblings, 1 reply; 2+ messages in thread
From: wangxuszcn at foxmail dot com @ 2021-06-26 10:38 UTC (permalink / raw)
To: glibc-bugs
https://sourceware.org/bugzilla/show_bug.cgi?id=28015
Bug ID: 28015
Summary: add tunables for MALLOC_DEBUG
Product: glibc
Version: unspecified
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: malloc
Assignee: unassigned at sourceware dot org
Reporter: wangxuszcn at foxmail dot com
Target Milestone: ---
Created attachment 13513
--> https://sourceware.org/bugzilla/attachment.cgi?id=13513&action=edit
malloc-debug-tunable
add tunables for MALLOC_DEBUG
>From aae155501ca1b3b056d040e72d63317b1ab40685 Mon Sep 17 00:00:00 2001
From: WANGXU <wangxuszcn@formail.com>
Date: Thu, 11 Jun 2020 17:30:22 +0800
Subject: [PATCH] malloc debug -> tunalbe
---
elf/dl-tunables.list | 5 +++
malloc/Makefile | 3 +-
malloc/arena.c | 6 ++++
malloc/malloc.c | 49 +++++++++++++++++++++++++++-
4 files changed, 111 insertions(+), 46 deletions(-)
diff --git a/elf/dl-tunables.list b/elf/dl-tunables.list
index 0d398dd..4e741dc 100644
--- a/elf/dl-tunables.list
+++ b/elf/dl-tunables.list
@@ -90,6 +90,11 @@ glibc {
minval: 0
security_level: SXID_IGNORE
}
+ malloc_debug {
+ type: SIZE_T
+ minval: 0
+ maxval: 1
+ }
}
cpu {
hwcap_mask {
diff --git a/malloc/Makefile b/malloc/Makefile
index e22cbde..eeb044a 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -204,8 +204,9 @@ CPPFLAGS-malloc.c += -DUSE_TCACHE=1
else
CPPFLAGS-malloc.c += -DUSE_TCACHE=0
endif
+CFLAGS-malloc.c += -Wno-frame-address
# Uncomment this for test releases. For public releases it is too expensive.
-#CPPFLAGS-malloc.o += -DMALLOC_DEBUG=1
+CPPFLAGS-malloc.o += -DMALLOC_DEBUG=1
sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,')
diff --git a/malloc/arena.c b/malloc/arena.c
index cecdb7f..5b4bfee 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -237,6 +237,9 @@ TUNABLE_CALLBACK_FNDECL (set_tcache_count, size_t)
TUNABLE_CALLBACK_FNDECL (set_tcache_unsorted_limit, size_t)
#endif
TUNABLE_CALLBACK_FNDECL (set_mxfast, size_t)
+#if MALLOC_DEBUG
+TUNABLE_CALLBACK_FNDECL (set_malloc_debug, size_t)
+#endif
#else
/* Initialization routine. */
#include <string.h>
@@ -325,6 +328,9 @@ ptmalloc_init (void)
TUNABLE_CALLBACK (set_tcache_unsorted_limit));
# endif
TUNABLE_GET (mxfast, size_t, TUNABLE_CALLBACK (set_mxfast));
+# if MALLOC_DEBUG
+ TUNABLE_GET (malloc_debug, size_t, TUNABLE_CALLBACK (set_malloc_debug));
+# endif
#else
const char *s = NULL;
if (__glibc_likely (_environ != NULL))
diff --git a/malloc/malloc.c b/malloc/malloc.c
index ee87ddb..0fac4d3 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1743,6 +1743,9 @@ struct malloc_par
aren't used to prefill the cache. */
size_t tcache_unsorted_limit;
#endif
+#if MALLOC_DEBUG
+ size_t malloc_debug;
+#endif
};
/* There are several instances of this struct ("arenas") in this
@@ -1788,6 +1791,10 @@ static struct malloc_par mp_ =
.tcache_max_bytes = tidx2usize (TCACHE_MAX_BINS-1),
.tcache_unsorted_limit = 0 /* No limit. */
#endif
+#if MALLOC_DEBUG
+ ,
+ .malloc_debug = 0
+#endif
};
/*
@@ -1930,6 +1937,10 @@ free_perturb (char *p, size_t n)
static void
do_check_chunk (mstate av, mchunkptr p)
{
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
unsigned long sz = chunksize (p);
/* min and max possible addresses assuming contiguous allocation */
char *max_address = (char *) (av->top) + chunksize (av->top);
@@ -1975,6 +1986,10 @@ do_check_chunk (mstate av, mchunkptr p)
static void
do_check_free_chunk (mstate av, mchunkptr p)
{
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
INTERNAL_SIZE_T sz = chunksize_nomask (p) & ~(PREV_INUSE | NON_MAIN_ARENA);
mchunkptr next = chunk_at_offset (p, sz);
@@ -2012,6 +2027,10 @@ do_check_inuse_chunk (mstate av, mchunkptr p)
{
mchunkptr next;
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
do_check_chunk (av, p);
if (chunk_is_mmapped (p))
@@ -2050,6 +2069,10 @@ do_check_inuse_chunk (mstate av, mchunkptr p)
static void
do_check_remalloced_chunk (mstate av, mchunkptr p, INTERNAL_SIZE_T s)
{
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
INTERNAL_SIZE_T sz = chunksize_nomask (p) & ~(PREV_INUSE | NON_MAIN_ARENA);
if (!chunk_is_mmapped (p))
@@ -2080,6 +2103,10 @@ do_check_remalloced_chunk (mstate av, mchunkptr p,
INTERNAL_SIZE_T s)
static void
do_check_malloced_chunk (mstate av, mchunkptr p, INTERNAL_SIZE_T s)
{
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
/* same as recycled case ... */
do_check_remalloced_chunk (av, p, s);
@@ -2120,6 +2147,10 @@ do_check_malloc_state (mstate av)
unsigned long total = 0;
int max_fast_bin;
+#if MALLOC_DEBUG
+ if (__glibc_likely(!mp_.malloc_debug))
+ return;
+#endif
/* internal size_t must be no wider than pointer type */
assert (sizeof (INTERNAL_SIZE_T) <= sizeof (char *));
@@ -3552,7 +3583,9 @@ _int_malloc (mstate av, size_t bytes)
#if USE_TCACHE
size_t tcache_unsorted_count; /* count of unsorted chunks
processed */
#endif
-
+ //void *func = __builtin_return_address(1);
+ //if (func)
+// return func;
/*
Convert request size to internal form by adding SIZE_SZ bytes
overhead plus possibly more to obtain necessary alignment and/or
@@ -5172,6 +5205,20 @@ do_set_mxfast (size_t value)
return 0;
}
+#if MALLOC_DEBUG
+static __always_inline int
+do_set_malloc_debug (size_t value)
+{
+ if (value <= MAX_TCACHE_COUNT)
+ {
+ LIBC_PROBE (memory_tunable_malloc_debug, 2, value, mp_.malloc_debug);
+ mp_.malloc_debug = value;
+ return 1;
+ }
+ return 0;
+}
+#endif
+
int
__libc_mallopt (int param_number, int value)
{
1.8.5.6
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug malloc/28015] add tunables for MALLOC_DEBUG
2021-06-26 10:38 [Bug malloc/28015] New: add tunables for MALLOC_DEBUG wangxuszcn at foxmail dot com
@ 2024-05-07 17:43 ` adhemerval.zanella at linaro dot org
0 siblings, 0 replies; 2+ messages in thread
From: adhemerval.zanella at linaro dot org @ 2024-05-07 17:43 UTC (permalink / raw)
To: glibc-bugs
https://sourceware.org/bugzilla/show_bug.cgi?id=28015
Adhemerval Zanella <adhemerval.zanella at linaro dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |adhemerval.zanella at linaro dot o
| |rg
Resolution|--- |WONTFIX
Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> ---
With malloc debug now provided by a different library (libc_malloc_debug.so), I
don't think a tunable makes sense anymore.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-05-07 17:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-26 10:38 [Bug malloc/28015] New: add tunables for MALLOC_DEBUG wangxuszcn at foxmail dot com
2024-05-07 17:43 ` [Bug malloc/28015] " adhemerval.zanella at linaro dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).