mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
* malloc/hooks.c (MALLOC_STATE_VERSION): Bump.
(public_sET_STATe): If ms->version < 3, put all chunks into unsorted chunks and clear {fd,bk}_nextsize fields of largebin chunks. * malloc/malloc.c [MALLOC_DEBUG]: Revert 2007-05-13 changes. * malloc/hooks.c: Likewise. * malloc/arena.c: Likewise. * malloc/malloc.c (do_check_malloc_state): Don't assert n_mmaps is not greater than n_mmaps_max. This removes the need for the previous change. * malloc/Makefile (CFLAGS-malloc.c): Revert accidental 2007-05-07 commit.
This commit is contained in:
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
|||||||
|
2007-05-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* malloc/hooks.c (MALLOC_STATE_VERSION): Bump.
|
||||||
|
(public_sET_STATe): If ms->version < 3, put all chunks into
|
||||||
|
unsorted chunks and clear {fd,bk}_nextsize fields of largebin
|
||||||
|
chunks.
|
||||||
|
|
||||||
|
* malloc/malloc.c [MALLOC_DEBUG]: Revert 2007-05-13 changes.
|
||||||
|
* malloc/hooks.c: Likewise.
|
||||||
|
* malloc/arena.c: Likewise.
|
||||||
|
* malloc/malloc.c (do_check_malloc_state): Don't assert
|
||||||
|
n_mmaps is not greater than n_mmaps_max. This removes the need
|
||||||
|
for the previous change.
|
||||||
|
|
||||||
|
* malloc/Makefile (CFLAGS-malloc.c): Revert accidental
|
||||||
|
2007-05-07 commit.
|
||||||
|
|
||||||
2007-05-19 Ulrich Drepper <drepper@redhat.com>
|
2007-05-19 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRIVATE_FUTEX):
|
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRIVATE_FUTEX):
|
||||||
|
@ -104,7 +104,6 @@ $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
|
|||||||
include ../Rules
|
include ../Rules
|
||||||
|
|
||||||
CFLAGS-mcheck-init.c = $(PIC-ccflag)
|
CFLAGS-mcheck-init.c = $(PIC-ccflag)
|
||||||
CFLAGS-malloc.c += -DMALLOC_DEBUG
|
|
||||||
|
|
||||||
$(objpfx)libmcheck.a: $(objpfx)mcheck-init.o
|
$(objpfx)libmcheck.a: $(objpfx)mcheck-init.o
|
||||||
-rm -f $@
|
-rm -f $@
|
||||||
|
@ -370,9 +370,6 @@ ptmalloc_init_minimal (void)
|
|||||||
mp_.top_pad = DEFAULT_TOP_PAD;
|
mp_.top_pad = DEFAULT_TOP_PAD;
|
||||||
#endif
|
#endif
|
||||||
mp_.n_mmaps_max = DEFAULT_MMAP_MAX;
|
mp_.n_mmaps_max = DEFAULT_MMAP_MAX;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
mp_.n_mmaps_cmax = DEFAULT_MMAP_MAX;
|
|
||||||
#endif
|
|
||||||
mp_.mmap_threshold = DEFAULT_MMAP_THRESHOLD;
|
mp_.mmap_threshold = DEFAULT_MMAP_THRESHOLD;
|
||||||
mp_.trim_threshold = DEFAULT_TRIM_THRESHOLD;
|
mp_.trim_threshold = DEFAULT_TRIM_THRESHOLD;
|
||||||
mp_.pagesize = malloc_getpagesize;
|
mp_.pagesize = malloc_getpagesize;
|
||||||
|
@ -496,7 +496,7 @@ free_starter(mem, caller) Void_t* mem; const Void_t *caller;
|
|||||||
then the hooks are reset to 0. */
|
then the hooks are reset to 0. */
|
||||||
|
|
||||||
#define MALLOC_STATE_MAGIC 0x444c4541l
|
#define MALLOC_STATE_MAGIC 0x444c4541l
|
||||||
#define MALLOC_STATE_VERSION (0*0x100l + 2l) /* major*0x100 + minor */
|
#define MALLOC_STATE_VERSION (0*0x100l + 3l) /* major*0x100 + minor */
|
||||||
|
|
||||||
struct malloc_save_state {
|
struct malloc_save_state {
|
||||||
long magic;
|
long magic;
|
||||||
@ -507,9 +507,6 @@ struct malloc_save_state {
|
|||||||
unsigned long trim_threshold;
|
unsigned long trim_threshold;
|
||||||
unsigned long top_pad;
|
unsigned long top_pad;
|
||||||
unsigned int n_mmaps_max;
|
unsigned int n_mmaps_max;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
unsigned int n_mmaps_cmax;
|
|
||||||
#endif
|
|
||||||
unsigned long mmap_threshold;
|
unsigned long mmap_threshold;
|
||||||
int check_action;
|
int check_action;
|
||||||
unsigned long max_sbrked_mem;
|
unsigned long max_sbrked_mem;
|
||||||
@ -553,9 +550,6 @@ public_gET_STATe(void)
|
|||||||
ms->trim_threshold = mp_.trim_threshold;
|
ms->trim_threshold = mp_.trim_threshold;
|
||||||
ms->top_pad = mp_.top_pad;
|
ms->top_pad = mp_.top_pad;
|
||||||
ms->n_mmaps_max = mp_.n_mmaps_max;
|
ms->n_mmaps_max = mp_.n_mmaps_max;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
ms->n_mmaps_cmax = mp_.n_mmaps_cmax;
|
|
||||||
#endif
|
|
||||||
ms->mmap_threshold = mp_.mmap_threshold;
|
ms->mmap_threshold = mp_.mmap_threshold;
|
||||||
ms->check_action = check_action;
|
ms->check_action = check_action;
|
||||||
ms->max_sbrked_mem = main_arena.max_system_mem;
|
ms->max_sbrked_mem = main_arena.max_system_mem;
|
||||||
@ -601,8 +595,9 @@ public_sET_STATe(Void_t* msptr)
|
|||||||
assert(ms->av[2*i+3] == 0);
|
assert(ms->av[2*i+3] == 0);
|
||||||
first(b) = last(b) = b;
|
first(b) = last(b) = b;
|
||||||
} else {
|
} else {
|
||||||
if(i<NSMALLBINS || (largebin_index(chunksize(ms->av[2*i+2]))==i &&
|
if(ms->version >= 3 &&
|
||||||
largebin_index(chunksize(ms->av[2*i+3]))==i)) {
|
(i<NSMALLBINS || (largebin_index(chunksize(ms->av[2*i+2]))==i &&
|
||||||
|
largebin_index(chunksize(ms->av[2*i+3]))==i))) {
|
||||||
first(b) = ms->av[2*i+2];
|
first(b) = ms->av[2*i+2];
|
||||||
last(b) = ms->av[2*i+3];
|
last(b) = ms->av[2*i+3];
|
||||||
/* Make sure the links to the bins within the heap are correct. */
|
/* Make sure the links to the bins within the heap are correct. */
|
||||||
@ -622,14 +617,22 @@ public_sET_STATe(Void_t* msptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ms->version < 3) {
|
||||||
|
/* Clear fd_nextsize and bk_nextsize fields. */
|
||||||
|
b = unsorted_chunks(&main_arena)->fd;
|
||||||
|
while (b != unsorted_chunks(&main_arena)) {
|
||||||
|
if (!in_smallbin_range(chunksize(b))) {
|
||||||
|
b->fd_nextsize = NULL;
|
||||||
|
b->bk_nextsize = NULL;
|
||||||
|
}
|
||||||
|
b = b->fd;
|
||||||
|
}
|
||||||
|
}
|
||||||
mp_.sbrk_base = ms->sbrk_base;
|
mp_.sbrk_base = ms->sbrk_base;
|
||||||
main_arena.system_mem = ms->sbrked_mem_bytes;
|
main_arena.system_mem = ms->sbrked_mem_bytes;
|
||||||
mp_.trim_threshold = ms->trim_threshold;
|
mp_.trim_threshold = ms->trim_threshold;
|
||||||
mp_.top_pad = ms->top_pad;
|
mp_.top_pad = ms->top_pad;
|
||||||
mp_.n_mmaps_max = ms->n_mmaps_max;
|
mp_.n_mmaps_max = ms->n_mmaps_max;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
mp_.n_mmaps_cmax = ms->n_mmaps_cmax;
|
|
||||||
#endif
|
|
||||||
mp_.mmap_threshold = ms->mmap_threshold;
|
mp_.mmap_threshold = ms->mmap_threshold;
|
||||||
check_action = ms->check_action;
|
check_action = ms->check_action;
|
||||||
main_arena.max_system_mem = ms->max_sbrked_mem;
|
main_arena.max_system_mem = ms->max_sbrked_mem;
|
||||||
|
@ -2358,9 +2358,6 @@ struct malloc_par {
|
|||||||
/* Memory map support */
|
/* Memory map support */
|
||||||
int n_mmaps;
|
int n_mmaps;
|
||||||
int n_mmaps_max;
|
int n_mmaps_max;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
int n_mmaps_cmax;
|
|
||||||
#endif
|
|
||||||
int max_n_mmaps;
|
int max_n_mmaps;
|
||||||
/* the mmap_threshold is dynamic, until the user sets
|
/* the mmap_threshold is dynamic, until the user sets
|
||||||
it manually, at which point we need to disable any
|
it manually, at which point we need to disable any
|
||||||
@ -2876,8 +2873,6 @@ static void do_check_malloc_state(mstate av)
|
|||||||
assert(total <= (unsigned long)(mp_.max_total_mem));
|
assert(total <= (unsigned long)(mp_.max_total_mem));
|
||||||
assert(mp_.n_mmaps >= 0);
|
assert(mp_.n_mmaps >= 0);
|
||||||
#endif
|
#endif
|
||||||
assert(mp_.n_mmaps <= mp_.n_mmaps_cmax);
|
|
||||||
assert(mp_.n_mmaps_max <= mp_.n_mmaps_cmax);
|
|
||||||
assert(mp_.n_mmaps <= mp_.max_n_mmaps);
|
assert(mp_.n_mmaps <= mp_.max_n_mmaps);
|
||||||
|
|
||||||
assert((unsigned long)(av->system_mem) <=
|
assert((unsigned long)(av->system_mem) <=
|
||||||
@ -3475,13 +3470,6 @@ munmap_chunk(p) mchunkptr p;
|
|||||||
}
|
}
|
||||||
|
|
||||||
mp_.n_mmaps--;
|
mp_.n_mmaps--;
|
||||||
#if MALLOC_DEBUG
|
|
||||||
if (mp_.n_mmaps_cmax > mp_.n_mmaps_max)
|
|
||||||
{
|
|
||||||
assert (mp_.n_mmaps_cmax == mp_.n_mmaps + 1);
|
|
||||||
mp_.n_mmaps_cmax = mp_.n_mmaps;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
mp_.mmapped_mem -= total_size;
|
mp_.mmapped_mem -= total_size;
|
||||||
|
|
||||||
int ret __attribute__ ((unused)) = munmap((char *)block, total_size);
|
int ret __attribute__ ((unused)) = munmap((char *)block, total_size);
|
||||||
@ -5397,9 +5385,6 @@ mstate av; size_t n_elements; size_t* sizes; int opts; Void_t* chunks[];
|
|||||||
mp_.n_mmaps_max = 0;
|
mp_.n_mmaps_max = 0;
|
||||||
mem = _int_malloc(av, size);
|
mem = _int_malloc(av, size);
|
||||||
mp_.n_mmaps_max = mmx; /* reset mmap */
|
mp_.n_mmaps_max = mmx; /* reset mmap */
|
||||||
#if MALLOC_DEBUG
|
|
||||||
mp_.n_mmaps_cmax = mmx;
|
|
||||||
#endif
|
|
||||||
if (mem == 0)
|
if (mem == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -5725,17 +5710,8 @@ int mALLOPt(param_number, value) int param_number; int value;
|
|||||||
res = 0;
|
res = 0;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
mp_.n_mmaps_max = value;
|
||||||
#if MALLOC_DEBUG
|
mp_.no_dyn_threshold = 1;
|
||||||
if (mp_.n_mmaps <= value)
|
|
||||||
mp_.n_mmaps_cmax = value;
|
|
||||||
else
|
|
||||||
mp_.n_mmaps_cmax = mp_.n_mmaps;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mp_.n_mmaps_max = value;
|
|
||||||
mp_.no_dyn_threshold = 1;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_CHECK_ACTION:
|
case M_CHECK_ACTION:
|
||||||
|
Reference in New Issue
Block a user