chromium tries to implement random mmap on its own. Allowing mmap to pick its own random location will likely fix aarch64 and i386 issues.
This diff has not completed a build on aarch64 yet, but it has passed the part of the build where it fails with ENOMEM. I'm passing this along early to get wider testing help. Index: Makefile =================================================================== RCS file: /cvs/ports/www/chromium/Makefile,v retrieving revision 1.550 diff -u -p -u -r1.550 Makefile --- Makefile 26 Feb 2021 18:20:36 -0000 1.550 +++ Makefile 9 Mar 2021 02:58:22 -0000 @@ -1,8 +1,5 @@ # $OpenBSD: Makefile,v 1.550 2021/02/26 18:20:36 naddy Exp $ -# /usr/local/bin/chrome[60]: /usr/local/chrome/chrome: Cannot allocate memory -BROKEN-i386= runtime fails, cannot execve the built binary, immediate ENOMEM even with high limits - .include <bsd.port.arch.mk> USE_WXNEEDED= Yes @@ -16,6 +13,7 @@ DPB_PROPERTIES= lonesome COMMENT= Chromium browser V= 88.0.4324.190 +REVISION= 0 DISTNAME= chromium-${V} Index: patches/patch-v8_src_base_platform_platform-posix_cc =================================================================== RCS file: /cvs/ports/www/chromium/patches/patch-v8_src_base_platform_platform-posix_cc,v retrieving revision 1.29 diff -u -p -u -r1.29 patch-v8_src_base_platform_platform-posix_cc --- patches/patch-v8_src_base_platform_platform-posix_cc 20 Jan 2021 07:28:12 -0000 1.29 +++ patches/patch-v8_src_base_platform_platform-posix_cc 9 Mar 2021 02:58:22 -0000 @@ -3,7 +3,31 @@ $OpenBSD: patch-v8_src_base_platform_pla Index: v8/src/base/platform/platform-posix.cc --- v8/src/base/platform/platform-posix.cc.orig +++ v8/src/base/platform/platform-posix.cc -@@ -464,7 +464,7 @@ bool OS::DiscardSystemPages(void* address, size_t size +@@ -266,8 +266,15 @@ void OS::SetRandomMmapSeed(int64_t seed) { + } + } + ++#if V8_OS_OPENBSD ++// Allow OpenBSD's mmap to select a random address on OpenBSD + // static + void* OS::GetRandomMmapAddr() { ++ return nullptr; ++} ++#else ++// static ++void* OS::GetRandomMmapAddr() { + uintptr_t raw_addr; + { + MutexGuard guard(rng_mutex.Pointer()); +@@ -350,6 +357,7 @@ void* OS::GetRandomMmapAddr() { + #endif + return reinterpret_cast<void*>(raw_addr); + } ++#endif + + // TODO(bbudge) Move Cygwin and Fuchsia stuff into platform-specific files. + #if !V8_OS_CYGWIN && !V8_OS_FUCHSIA +@@ -464,7 +472,7 @@ bool OS::DiscardSystemPages(void* address, size_t size // static bool OS::HasLazyCommits() { @@ -12,7 +36,7 @@ Index: v8/src/base/platform/platform-pos return true; #else // TODO(bbudge) Return true for all POSIX platforms. -@@ -1000,7 +1000,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* +@@ -1000,7 +1008,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* // keep this version in POSIX as most Linux-compatible derivatives will // support it. MacOS and FreeBSD are different here. #if !defined(V8_OS_FREEBSD) && !defined(V8_OS_MACOSX) && !defined(_AIX) && \