From 472c97b38c6e83326b182fac7331840f763ee414 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 20 Oct 2021 12:42:40 -0700 Subject: [PATCH] Print errno when mprotect fails Trying to figure out the problem on s390x. --- gc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gc.c b/gc.c index fdd4ac5eb38103..c52e7f131d3a54 100644 --- a/gc.c +++ b/gc.c @@ -4870,7 +4870,8 @@ lock_page_body(rb_objspace_t *objspace, struct heap_page_body *body) #else if (mprotect(body, HEAP_PAGE_SIZE, PROT_NONE)) { #endif - rb_bug("Couldn't protect page %p", (void *)body); + int pagesize = (int)sysconf(_SC_PAGE_SIZE); + rb_bug("Couldn't protect page %p, page size: %d errno: %s", (void *)body, pagesize, strerror(errno)); } else { gc_report(5, objspace, "Protecting page in move %p\n", (void *)body); @@ -4887,7 +4888,8 @@ unlock_page_body(rb_objspace_t *objspace, struct heap_page_body *body) #else if (mprotect(body, HEAP_PAGE_SIZE, PROT_READ | PROT_WRITE)) { #endif - rb_bug("Couldn't unprotect page %p", (void *)body); + int pagesize = (int)sysconf(_SC_PAGE_SIZE); + rb_bug("Couldn't unprotect page %p, page size: %d errno: %s", (void *)body, pagesize, strerror(errno)); } else { gc_report(5, objspace, "Unprotecting page in move %p\n", (void *)body);