Re: Server crash due to SIGBUS(Bus Error) when trying to access the memory created using dsm_create().

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: amul sul <sul_amul@yahoo.co.in>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2016-08-12T14:08:01Z
Lists: pgsql-hackers
amul sul <sul_amul@yahoo.co.in> writes:
> When I am calling dsm_create on Linux using the POSIX DSM implementation can succeed, but result in SIGBUS when later try to access the memory. This happens because of my system does not have enough shm space & current allocation in dsm_impl_posix does not allocate disk blocks[1].I wonder can we usefallocate system call (i.e. Zero-fill the file) to ensure thatall the file space has really been allocated, so that we don'tlater seg fault when accessing the memory mapping. Buthere we will endup byloop calling writesquillionsof times.

Wouldn't that just result in a segfault during dsm_create?

I think probably what you are describing here is kernel misbehavior
akin to memory overcommit.  Maybe it *is* memory overcommit and can
be turned off the same way.  If not, you have material for a kernel
bug fix/enhancement request.

			regards, tom lane


Commits

  1. Fix failure-to-read-man-page in commit 899bd785c.

  2. Avoid SIGBUS on Linux when a DSM memory request overruns tmpfs.