[NFC][scudo] Check zeros on smaller allocations

1Tb counting was the slowest test under the QEMU with MTE.
This commit is contained in:
Vitaly Buka 2021-05-27 10:02:47 -07:00
parent 5618a5a059
commit c261edb277
1 changed files with 19 additions and 7 deletions

View File

@ -35,27 +35,39 @@ TEST(ScudoCommonTest, SKIP_ON_FUCHSIA(ResidentMemorySize)) {
const uptr Threshold = Size >> 3;
MapPlatformData Data = {};
uptr *P = reinterpret_cast<uptr *>(
map(nullptr, Size, "ResidentMemorySize", 0, &Data));
const ptrdiff_t N = Size / sizeof(*P);
void *P = map(nullptr, Size, "ResidentMemorySize", 0, &Data);
ASSERT_NE(nullptr, P);
EXPECT_LT(getResidentMemorySize() - OnStart, Threshold);
EXPECT_EQ(std::count(P, P + N, 0), N);
memset(P, 1, Size);
EXPECT_EQ(std::count(P, P + N, 0), 0);
EXPECT_GT(getResidentMemorySize() - OnStart, Size - Threshold);
releasePagesToOS((uptr)P, 0, Size, &Data);
EXPECT_EQ(std::count(P, P + N, 0), N);
// FIXME: does not work with QEMU-user.
// EXPECT_LT(getResidentMemorySize() - OnStart, Threshold);
memset(P, 1, Size);
EXPECT_EQ(std::count(P, P + N, 0), 0);
EXPECT_GT(getResidentMemorySize() - OnStart, Size - Threshold);
unmap(P, Size, 0, &Data);
}
TEST(ScudoCommonTest, Zeros) {
const uptr Size = 1ull << 20;
MapPlatformData Data = {};
uptr *P = reinterpret_cast<uptr *>(map(nullptr, Size, "Zeros", 0, &Data));
const ptrdiff_t N = Size / sizeof(*P);
ASSERT_NE(nullptr, P);
EXPECT_EQ(std::count(P, P + N, 0), N);
memset(P, 1, Size);
EXPECT_EQ(std::count(P, P + N, 0), 0);
releasePagesToOS((uptr)P, 0, Size, &Data);
EXPECT_EQ(std::count(P, P + N, 0), N);
unmap(P, Size, 0, &Data);
}
} // namespace scudo