Block parallel JIT allocation on macos

This commit is contained in:
kd-11 2024-08-29 03:28:04 +03:00 committed by kd-11
parent ce9024efc5
commit 4d193ecb6a
2 changed files with 6 additions and 7 deletions

View file

@ -260,13 +260,7 @@ namespace utils
#ifdef __APPLE__
#ifdef ARCH_ARM64
// NOTE: On MacOS, parallel calls to mmap can return the same address more than once. Trying to madvise the same address twice throws EPERM.
static std::mutex mmap_lock;
void* ptr;
{
std::lock_guard lock(mmap_lock);
ptr = ::mmap(use_addr, size, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE | MAP_JIT | c_map_noreserve, -1, 0);
}
auto ptr = ::mmap(use_addr, size, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE | MAP_JIT | c_map_noreserve, -1, 0);
#else
auto ptr = ::mmap(use_addr, size, PROT_NONE, MAP_ANON | MAP_PRIVATE | MAP_JIT | c_map_noreserve, -1, 0);
#endif