wingo pushed a commit to branch wip-whippet in repository guile. commit 3c4fdfde0e3a6c4656d4a5d3fdbf2d4531ec9df7 Author: Andy Wingo <wi...@igalia.com> AuthorDate: Wed Apr 23 10:42:05 2025 +0200
Fix embarassing bug in which lack of MAP_FIXED meant unaligned slabs This would manifest itself in odd failures when accessing block/object metadata on slabs. --- src/gc-platform-gnu-linux.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gc-platform-gnu-linux.c b/src/gc-platform-gnu-linux.c index 3ace1890d..e5fcb9804 100644 --- a/src/gc-platform-gnu-linux.c +++ b/src/gc-platform-gnu-linux.c @@ -162,12 +162,12 @@ gc_platform_acquire_memory_from_reservation(struct gc_reservation reservation, GC_ASSERT(size <= reservation.size); GC_ASSERT(offset <= reservation.size - size); - void *mem = mmap((void*)(reservation.base + offset), size, - PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); - if (mem == MAP_FAILED) { - perror("mmap failed"); + void *mem = (void*)(reservation.base + offset); + if (mprotect(mem, size, PROT_READ|PROT_WRITE)) { + perror("mprotect failed"); return NULL; } + // FIXME: Should we gc_platform_populate_memory() here? return mem; }