Use an initial shared memory size of 256 GB on Apple. This implements an idea that Nicolas had to overcome the Darwin problem that it is not possible to extend a shared memory segment on that system. The remedy is simple: Use a memory segment that is larger than what can reasonably be used. This should only waste a few page table entries, while providing the functionality, at least for further testing. libgfortran/ChangeLog: * caf_shared/shared_memory.c (shared_memory_init): On Apple, use an initial size of 256 GB.
diff --git a/libgfortran/caf_shared/shared_memory.c b/libgfortran/caf_shared/shared_memory.c index b64e40a..0c0b36c 100644 --- a/libgfortran/caf_shared/shared_memory.c +++ b/libgfortran/caf_shared/shared_memory.c
@@ -190,7 +190,16 @@ { shared_memory_act *mem; int fd; + + /* Darwin does not appear to be able to grow shared memory segments. Choose + 256 GB; that will likely be enough. If not, the ftruncate will fail + noisily. */ + +#ifdef __APPLE__ + size_t initial_size = ((size_t) 1) << 38; +#else size_t initial_size = round_to_pagesize (sizeof (global_shared_memory_meta)); +#endif mem = malloc (get_shared_memory_act_size (1)); fd = get_shmem_fd ();