diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-10-19 08:59:33 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-11-14 21:52:21 +0300 |
commit | 9d02a747fb16779a92093fbda260fed201f0fd72 (patch) | |
tree | 93012010437f47ada65ae13155496240b28b980b | |
parent | 18b384c5c3548f8a960c2382c645aed55ab98874 (diff) | |
download | bdwgc-9d02a747fb16779a92093fbda260fed201f0fd72.tar.gz |
Abort with appropriate message if first call of mmap fails with EPERM
(fix of commit 1c62b365b)
This is observed on Linux, at least.
* os_dep.c [!OS2 && !PCR && !AMIGA && !USE_WINALLOC && !MACOS
&& !DOS4GW && !NINTENDO_SWITCH && !NONSTOP && !SN_TARGET_ORBIS
&& !SN_TARGET_PS3 && !SN_TARGET_PSP2 && !RTEMS && !__CC_ARM
&& MMAP_SUPPORTED && !MSWIN_XBOX1] (GC_unix_mmap_get_mem): Call ABORT()
if allocation failed and GC_pages_executable and last_addr==HEAP_START
and errno is EPERM.
-rw-r--r-- | os_dep.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -2205,7 +2205,8 @@ void GC_register_data_segments(void) # undef IGNORE_PAGES_EXECUTABLE if (EXPECT(MAP_FAILED == result, FALSE)) { - if (HEAP_START == last_addr && GC_pages_executable && EACCES == errno) + if (HEAP_START == last_addr && GC_pages_executable + && (EACCES == errno || EPERM == errno)) ABORT("Cannot allocate executable pages"); return NULL; } |