Make EXEC_BACKEND more convenient on macOS.

It's hard to disable ASLR on current macOS releases, for testing with
-DEXEC_BACKEND.  You could already set the environment variable
PG_SHMEM_ADDR to something not likely to collide with mappings created
earlier in process startup.  Let's also provide a default value that
works on current releases and architectures, for developer convenience.

As noted in the pre-existing comment, this is a horrible hack, but
-DEXEC_BACKEND is only used by Unix-based PostgreSQL developers for
testing some otherwise Windows-only code paths, so it seems excusable.

Back-patch to all supported branches.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/20210806032944.m4tz7j2w47mant26%40alap3.anarazel.de
This commit is contained in:
Thomas Munro 2021-08-13 10:38:22 +12:00
parent 650663b4cb
commit 88cbbbfa3e
1 changed files with 10 additions and 0 deletions

View File

@ -143,6 +143,16 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size)
if (pg_shmem_addr)
requestedAddress = (void *) strtoul(pg_shmem_addr, NULL, 0);
else
{
#if defined(__darwin__) && SIZEOF_VOID_P == 8
/*
* Provide a default value that is believed to avoid problems with
* ASLR on the current macOS release.
*/
requestedAddress = (void *) 0x80000000000;
#endif
}
}
#endif