1#include "test/jemalloc_test.h" 2 3const char *malloc_conf = "" 4#ifdef JEMALLOC_PROF 5 "prof:true,prof_accum:true,prof_active:false,lg_prof_sample:0" 6 ",lg_prof_interval:0" 7# ifdef JEMALLOC_TCACHE 8 "," 9# endif 10#endif 11#ifdef JEMALLOC_TCACHE 12 "tcache:false" 13#endif 14 ; 15 16static bool did_prof_dump_open; 17 18static int 19prof_dump_open_intercept(bool propagate_err, const char *filename) 20{ 21 int fd; 22 23 did_prof_dump_open = true; 24 25 fd = open("/dev/null", O_WRONLY); 26 assert_d_ne(fd, -1, "Unexpected open() failure"); 27 28 return (fd); 29} 30 31TEST_BEGIN(test_idump) 32{ 33 bool active; 34 void *p; 35 36 test_skip_if(!config_prof); 37 38 active = true; 39 assert_d_eq(mallctl("prof.active", NULL, NULL, (void *)&active, 40 sizeof(active)), 0, 41 "Unexpected mallctl failure while activating profiling"); 42 43 prof_dump_open = prof_dump_open_intercept; 44 45 did_prof_dump_open = false; 46 p = mallocx(1, 0); 47 assert_ptr_not_null(p, "Unexpected mallocx() failure"); 48 dallocx(p, 0); 49 assert_true(did_prof_dump_open, "Expected a profile dump"); 50} 51TEST_END 52 53int 54main(void) 55{ 56 return (test( 57 test_idump)); 58} 59