[Android/MEM] MPROTECT OOM handling.

This commit is contained in:
Bix 2025-07-04 13:02:32 +01:00 committed by crueter
parent 5091759a47
commit 87c9ad32f2
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6

View file

@ -387,10 +387,10 @@ static void* ChooseVirtualBase(size_t virtual_size) {
uintptr_t hint_address = ((rng() % range) + lower) * HugePageSize;
// Try to map.
// Note: we may be able to take advantage of MAP_FIXED_NOREPLACE here.
// Added MAP_FIXED_NOREPLACE here to stop mprotect eventually (20+ mins) failing with out of memory.
void* map_pointer =
mmap(reinterpret_cast<void*>(hint_address), virtual_size, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0);
MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE | MAP_FIXED_NOREPLACE, -1, 0);
// If we successfully mapped, we're done.
if (reinterpret_cast<uintptr_t>(map_pointer) == hint_address) {