Loading...
--- libmalloc/libmalloc-374.40.6/tests/pgm_internals.c
+++ libmalloc/libmalloc-646.40.3/tests/pgm_internals.c
@@ -12,7 +12,8 @@
#include <darwintest.h>
-T_GLOBAL_META(T_META_RUN_CONCURRENTLY(TRUE), T_META_NAMESPACE("pgm"));
+T_GLOBAL_META(T_META_RUN_CONCURRENTLY(TRUE), T_META_NAMESPACE("pgm"),
+ T_META_TAG_VM_PREFERRED);
// Use extra weird page size (not even a power of 2) to expose implicit
// assumptions and help prevent issues caused by different page sizes on macOS
@@ -52,6 +53,18 @@
T_EXPECT_FALSE(should_sample_counter(7), "1/3 -> skip");
T_EXPECT_FALSE(should_sample_counter(7), "2/3 -> skip");
T_EXPECT_TRUE (should_sample_counter(7), "3/3 -> sample");
+
+ rand_ret_value = 0;
+ malloc_thread_options_t opts = {.DisableProbabilisticGuardMalloc = true};
+ malloc_set_thread_options(opts);
+ T_EXPECT_EQ(TSD_GET_COUNTER(), k_no_sample, "set no sample marker");
+ T_EXPECT_FALSE(should_sample_counter(8), "sampling disabled");
+ T_EXPECT_EQ(TSD_GET_COUNTER(), k_no_sample, "no sample marker retained");
+
+ opts.DisableProbabilisticGuardMalloc = false;
+ malloc_set_thread_options(opts);
+ T_EXPECT_EQ(TSD_GET_COUNTER(), 0, "regenerate sample counter");
+ T_EXPECT_TRUE(should_sample_counter(7), "sampling re-enabled");
}
T_DECL(should_sample, "should_sample")
@@ -156,22 +169,22 @@
#define TEST_LOOKUP_SLOT(addr, expected_slot, expected_bounds, expected_live_block_addr, msg) \
{ \
slot_lookup_t res = lookup_slot(&zone, addr); \
- T_EXPECT_EQ(res.slot, expected_slot, msg ": slot"); \
- T_EXPECT_EQ(res.bounds, expected_bounds, msg ": bounds"); \
+ T_EXPECT_EQ((unsigned int)res.slot, expected_slot, msg ": slot"); \
+ T_EXPECT_EQ((unsigned int)res.bounds, expected_bounds, msg ": bounds"); \
T_EXPECT_EQ(!!res.live_block_addr, expected_live_block_addr, msg ": live_block_addr"); \
}
zone.begin = 50000; zone.end = 60000;
slots[0].offset = 7; slots[0].size = 2;
- TEST_LOOKUP_SLOT(51000, 0, b_oob_slot, FALSE, "slot 0");
- TEST_LOOKUP_SLOT(51007, 0, b_block_addr, FALSE, "block address");
- TEST_LOOKUP_SLOT(51008, 0, b_valid, FALSE, "valid address");
- TEST_LOOKUP_SLOT(51009, 0, b_oob_slot, FALSE, "slot");
- TEST_LOOKUP_SLOT(52000, 0, b_oob_guard_page, FALSE, "guard page");
- TEST_LOOKUP_SLOT(53007, 1, b_oob_slot, FALSE, "slot 1");
+ TEST_LOOKUP_SLOT(51000, 0, b_oob_slot, false, "slot 0");
+ TEST_LOOKUP_SLOT(51007, 0, b_block_addr, false, "block address");
+ TEST_LOOKUP_SLOT(51008, 0, b_valid, false, "valid address");
+ TEST_LOOKUP_SLOT(51009, 0, b_oob_slot, false, "slot");
+ TEST_LOOKUP_SLOT(52000, 0, b_oob_guard_page, false, "guard page");
+ TEST_LOOKUP_SLOT(53007, 1, b_oob_slot, false, "slot 1");
slots[0].state = ss_allocated;
- TEST_LOOKUP_SLOT(51007, 0, b_block_addr, TRUE, "live block address");
+ TEST_LOOKUP_SLOT(51007, 0, b_block_addr, true, "live block address");
}
@@ -193,18 +206,13 @@
T_DECL(block_size, "block_size")
{
- T_EXPECT_EQ(block_size( 0, 16), 16ul, NULL);
- T_EXPECT_EQ(block_size( 1, 16), 16ul, NULL);
- T_EXPECT_EQ(block_size(15, 16), 16ul, NULL);
- T_EXPECT_EQ(block_size(16, 16), 16ul, NULL);
- T_EXPECT_EQ(block_size(17, 16), 32ul, NULL);
- T_EXPECT_EQ(block_size(32, 16), 32ul, NULL);
- T_EXPECT_EQ(block_size(33, 16), 48ul, NULL);
-
- T_EXPECT_EQ(block_size(0, 1), 1ul, NULL);
- T_EXPECT_EQ(block_size(1, 1), 1ul, NULL);
- T_EXPECT_EQ(block_size(2, 1), 2ul, NULL);
- T_EXPECT_EQ(block_size(3, 1), 3ul, NULL);
+ T_EXPECT_EQ(block_size( 0), 16ul, NULL);
+ T_EXPECT_EQ(block_size( 1), 16ul, NULL);
+ T_EXPECT_EQ(block_size(15), 16ul, NULL);
+ T_EXPECT_EQ(block_size(16), 16ul, NULL);
+ T_EXPECT_EQ(block_size(17), 32ul, NULL);
+ T_EXPECT_EQ(block_size(32), 32ul, NULL);
+ T_EXPECT_EQ(block_size(33), 48ul, NULL);
}
T_DECL(choose_available_slot, "choose_available_slot")