mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-19 21:45:33 +00:00
BUG/MINOR: illegal use of the malloc_trim() function if jemalloc is used
In the event that HAProxy is linked with the jemalloc library, it is still shown that malloc_trim() is enabled when executing "haproxy -vv": .. Support for malloc_trim() is enabled. .. It's not so much a problem as it is that malloc_trim() is called in the pat_ref_purge_range() function without any checking. This was solved by setting the using_default_allocator variable to the correct value in the detect_allocator() function and before calling malloc_trim() it is checked whether the function should be called.
This commit is contained in:
parent
9ef2742a51
commit
d8a97d8f60
@ -101,6 +101,7 @@ extern int mem_poison_byte;
|
|||||||
/* set of POOL_DBG_* flags */
|
/* set of POOL_DBG_* flags */
|
||||||
extern uint pool_debugging;
|
extern uint pool_debugging;
|
||||||
|
|
||||||
|
int is_trim_enabled(void);
|
||||||
void *pool_get_from_os(struct pool_head *pool);
|
void *pool_get_from_os(struct pool_head *pool);
|
||||||
void pool_put_to_os(struct pool_head *pool, void *ptr);
|
void pool_put_to_os(struct pool_head *pool, void *ptr);
|
||||||
void *pool_alloc_nocache(struct pool_head *pool);
|
void *pool_alloc_nocache(struct pool_head *pool);
|
||||||
|
@ -2084,7 +2084,7 @@ int pat_ref_purge_range(struct pat_ref *ref, uint from, uint to, int budget)
|
|||||||
HA_RWLOCK_WRUNLOCK(PATEXP_LOCK, &expr->lock);
|
HA_RWLOCK_WRUNLOCK(PATEXP_LOCK, &expr->lock);
|
||||||
|
|
||||||
#if defined(HA_HAVE_MALLOC_TRIM)
|
#if defined(HA_HAVE_MALLOC_TRIM)
|
||||||
if (done) {
|
if (done && is_trim_enabled()) {
|
||||||
malloc_trim(0);
|
malloc_trim(0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -177,11 +177,10 @@ static void detect_allocator(void)
|
|||||||
|
|
||||||
my_mallctl = mallctl;
|
my_mallctl = mallctl;
|
||||||
#endif
|
#endif
|
||||||
|
if (!my_mallctl)
|
||||||
if (!my_mallctl) {
|
|
||||||
my_mallctl = get_sym_curr_addr("mallctl");
|
my_mallctl = get_sym_curr_addr("mallctl");
|
||||||
|
|
||||||
using_default_allocator = (my_mallctl == NULL);
|
using_default_allocator = (my_mallctl == NULL);
|
||||||
}
|
|
||||||
|
|
||||||
if (!my_mallctl) {
|
if (!my_mallctl) {
|
||||||
#if defined(HA_HAVE_MALLOC_TRIM)
|
#if defined(HA_HAVE_MALLOC_TRIM)
|
||||||
@ -212,7 +211,7 @@ static void detect_allocator(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_trim_enabled(void)
|
int is_trim_enabled(void)
|
||||||
{
|
{
|
||||||
return using_default_allocator;
|
return using_default_allocator;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user