Browse Source

[Android/MEM] MPROTECT OOM handling.

pull/3/head
Bix 8 months ago
committed by crueter
parent
commit
87c9ad32f2
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 4
      src/common/host_memory.cpp

4
src/common/host_memory.cpp

@ -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) {

Loading…
Cancel
Save