mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
* malloc/malloc.c (do_check_malloc_state): Only require for empty
bins for large sizes in main arena.
This commit is contained in:
parent
75aaf98ff8
commit
dbc3d56b70
@ -1,5 +1,8 @@
|
||||
2006-10-13 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* malloc/malloc.c (do_check_malloc_state): Only require for empty
|
||||
bins for large sizes in main arena.
|
||||
|
||||
* libio/stdio.h: Add more __wur attributes.
|
||||
|
||||
* elf/dl-minimal.c (realloc): Optimize last patch.
|
||||
|
@ -2741,8 +2741,19 @@ static void do_check_malloc_state(mstate av)
|
||||
for (i = 0; i < NFASTBINS; ++i) {
|
||||
p = av->fastbins[i];
|
||||
|
||||
/* The following test can only be performed for the main arena.
|
||||
While mallopt calls malloc_consolidate to get rid of all fast
|
||||
bins (especially those larger than the new maximum) this does
|
||||
only happen for the main arena. Trying to do this for any
|
||||
other arena would mean those arenas have to be locked and
|
||||
malloc_consolidate be called for them. This is excessive. And
|
||||
even if this is acceptable to somebody it still cannot solve
|
||||
the problem completely since if the arena is locked a
|
||||
concurrent malloc call might create a new arena which then
|
||||
could use the newly invalid fast bins. */
|
||||
|
||||
/* all bins past max_fast are empty */
|
||||
if (i > max_fast_bin)
|
||||
if (av == &main_arena && i > max_fast_bin)
|
||||
assert(p == 0);
|
||||
|
||||
while (p != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user