mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-08-24 08:03:32 +03:00
Implement the prof.gdump mallctl.
This feature makes it possible to toggle the gdump feature on/off during program execution, whereas the the opt.prof_dump mallctl value can only be set during program startup. This resolves #72.
This commit is contained in:
parent
41f2e692f6
commit
5b8ed5b7c9
7 changed files with 133 additions and 10 deletions
|
|
@ -21,8 +21,9 @@ prof_dump_open_intercept(bool propagate_err, const char *filename)
|
|||
|
||||
TEST_BEGIN(test_gdump)
|
||||
{
|
||||
bool active;
|
||||
void *p, *q;
|
||||
bool active, gdump, gdump_old;
|
||||
void *p, *q, *r, *s;
|
||||
size_t sz;
|
||||
|
||||
test_skip_if(!config_prof);
|
||||
|
||||
|
|
@ -42,8 +43,32 @@ TEST_BEGIN(test_gdump)
|
|||
assert_ptr_not_null(q, "Unexpected mallocx() failure");
|
||||
assert_true(did_prof_dump_open, "Expected a profile dump");
|
||||
|
||||
gdump = false;
|
||||
sz = sizeof(gdump_old);
|
||||
assert_d_eq(mallctl("prof.gdump", &gdump_old, &sz, &gdump,
|
||||
sizeof(gdump)), 0,
|
||||
"Unexpected mallctl failure while disabling prof.gdump");
|
||||
assert(gdump_old);
|
||||
did_prof_dump_open = false;
|
||||
r = mallocx(chunksize, 0);
|
||||
assert_ptr_not_null(q, "Unexpected mallocx() failure");
|
||||
assert_false(did_prof_dump_open, "Unexpected profile dump");
|
||||
|
||||
gdump = true;
|
||||
sz = sizeof(gdump_old);
|
||||
assert_d_eq(mallctl("prof.gdump", &gdump_old, &sz, &gdump,
|
||||
sizeof(gdump)), 0,
|
||||
"Unexpected mallctl failure while enabling prof.gdump");
|
||||
assert(!gdump_old);
|
||||
did_prof_dump_open = false;
|
||||
s = mallocx(chunksize, 0);
|
||||
assert_ptr_not_null(q, "Unexpected mallocx() failure");
|
||||
assert_true(did_prof_dump_open, "Expected a profile dump");
|
||||
|
||||
dallocx(p, 0);
|
||||
dallocx(q, 0);
|
||||
dallocx(r, 0);
|
||||
dallocx(s, 0);
|
||||
}
|
||||
TEST_END
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue