Exemplo n.º 1
0
static void
prof_sampling_probe_impl(bool expect_sample, const char *func, int line)
{
	void *p;
	size_t expected_backtraces = expect_sample ? 1 : 0;

	assert_zu_eq(prof_bt_count(), 0, "%s():%d: Expected 0 backtraces", func,
	    line);
	p = mallocx(1, 0);
	assert_ptr_not_null(p, "Unexpected mallocx() failure");
	assert_zu_eq(prof_bt_count(), expected_backtraces,
	    "%s():%d: Unexpected backtrace count", func, line);
	dallocx(p, 0);
}
Exemplo n.º 2
0
static void *
thd_start(void *varg)
{
    unsigned thd_ind = *(unsigned *)varg;
    size_t bt_count_prev, bt_count;
    unsigned i_prev, i;

    i_prev = 0;
    bt_count_prev = 0;
    for (i = 0; i < NALLOCS_PER_THREAD; i++) {
        void *p = alloc_from_permuted_backtrace(thd_ind, i);
        dallocx(p, 0);
        if (i % DUMP_INTERVAL == 0) {
            assert_d_eq(mallctl("prof.dump", NULL, NULL, NULL, 0),
                        0, "Unexpected error while dumping heap profile");
        }

        if (i % BT_COUNT_CHECK_INTERVAL == 0 ||
                i+1 == NALLOCS_PER_THREAD) {
            bt_count = prof_bt_count();
            assert_zu_le(bt_count_prev+(i-i_prev), bt_count,
                         "Expected larger backtrace count increase");
            i_prev = i;
            bt_count_prev = bt_count;
        }
    }

    return (NULL);
}