Improve malloc initialization sequence
commit3381be5cdef2e43949db12f66a5a3ec23b2c4c90
authorWilco Dijkstra <wdijkstr@arm.com>
Tue, 17 Oct 2017 17:55:16 +0000 (17 18:55 +0100)
committerWilco Dijkstra <wdijkstr@arm.com>
Tue, 17 Oct 2017 17:55:16 +0000 (17 18:55 +0100)
tree113f4b911e7eb488ec01ded9307bedcb38fa5793
parente956075a5a2044d05ce48b905b10270ed4a63e87
Improve malloc initialization sequence

The current malloc initialization is quite convoluted. Instead of
sometimes calling malloc_consolidate from ptmalloc_init, call
malloc_init_state early so that the main_arena is always initialized.
The special initialization can now be removed from malloc_consolidate.
This also fixes BZ #22159.

Check all calls to malloc_consolidate and remove calls that are
redundant initialization after ptmalloc_init, like in int_mallinfo
and __libc_mallopt (but keep the latter as consolidation is required for
set_max_fast).  Update comments to improve clarity.

Remove impossible initialization check from _int_malloc, fix assert
in do_check_malloc_state to ensure arena->top != 0.  Fix the obvious bugs
in do_check_free_chunk and do_check_remalloced_chunk to enable single
threaded malloc debugging (do_check_malloc_state is not thread safe!).

[BZ #22159]
* malloc/arena.c (ptmalloc_init): Call malloc_init_state.
* malloc/malloc.c (do_check_free_chunk): Fix build bug.
(do_check_remalloced_chunk): Fix build bug.
(do_check_malloc_state): Add assert that checks arena->top.
(malloc_consolidate): Remove initialization.
(int_mallinfo): Remove call to malloc_consolidate.
(__libc_mallopt): Clarify why malloc_consolidate is needed.
ChangeLog
malloc/arena.c
malloc/malloc.c