mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-29 18:56:03 +03:00
Handle tcache init failures gracefully
tsd_tcache_data_init() returns true on failure but its callers ignore this return value, leaving the per-thread tcache in an uninitialized state after a failure. This change disables the tcache on an initialization failure and logs an error message. If opt_abort is true, it will also abort. New unit tests have been added to test tcache initialization failures.
This commit is contained in:
parent
672bb57ed8
commit
1652fec1b4
4 changed files with 162 additions and 21 deletions
|
|
@ -64,7 +64,7 @@ bool tcache_bin_ncached_max_read(
|
|||
void tcache_arena_reassociate(
|
||||
tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_t *tcache, arena_t *arena);
|
||||
tcache_t *tcache_create_explicit(tsd_t *tsd);
|
||||
void thread_tcache_max_set(tsd_t *tsd, size_t tcache_max);
|
||||
bool thread_tcache_max_set(tsd_t *tsd, size_t tcache_max);
|
||||
void tcache_cleanup(tsd_t *tsd);
|
||||
void tcache_stats_merge(tsdn_t *tsdn, tcache_t *tcache, arena_t *arena);
|
||||
bool tcaches_create(tsd_t *tsd, base_t *base, unsigned *r_ind);
|
||||
|
|
@ -80,6 +80,9 @@ void tcache_flush(tsd_t *tsd);
|
|||
bool tsd_tcache_enabled_data_init(tsd_t *tsd);
|
||||
void tcache_enabled_set(tsd_t *tsd, bool enabled);
|
||||
|
||||
extern void *(*JET_MUTABLE tcache_stack_alloc)(tsdn_t *tsdn, size_t size,
|
||||
size_t alignment);
|
||||
|
||||
void tcache_assert_initialized(tcache_t *tcache);
|
||||
|
||||
extern te_base_cb_t tcache_gc_te_handler;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue