#include "test/jemalloc_test.h"
static void
mock_backtrace(void **vec, unsigned *len, unsigned max_len) {
*len = 4;
vec[0] = (void *)0x111;
vec[1] = (void *)0x222;
vec[2] = (void *)0x333;
vec[3] = (void *)0x444;
}
static void
do_allocs(size_t sz, size_t cnt, bool do_frees) {
for (size_t i = 0; i < cnt; i++) {
void *ptr = mallocx(sz, 0);
assert_ptr_not_null(ptr, "Unexpected mallocx failure");
if (do_frees) {
dallocx(ptr, 0);
}
}
}
int
main(void) {
size_t lg_prof_sample_local = 19;
int err = mallctl("prof.reset", NULL, NULL,
(void *)&lg_prof_sample_local, sizeof(lg_prof_sample_local));
assert(err == 0);
prof_backtrace_hook_set(mock_backtrace);
do_allocs(16, 32 * 1024 * 1024, true);
do_allocs(32 * 1024* 1024, 16, true);
do_allocs(16, 32 * 1024 * 1024, false);
do_allocs(32 * 1024* 1024, 16, false);
return 0;
}