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

From: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, amul sul <sul_amul(at)yahoo(dot)co(dot)in>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Server crash due to SIGBUS(Bus Error) when trying to access the memory created using dsm_create().
Date: 2017-09-25 21:34:50
Message-ID: CAEepm=3mdh7bHARBFFqPrMsJR+sC4WnWn+Xf9Fr-c_K7+J3XUA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Sep 26, 2017 at 10:12 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com> writes:
>> I think the problem here is that posix_fallocate() doesn't set errno.
>
> Huh. So the fact that it worked for me is likely because glibc's
> emulation *does* allow errno to get set.
>
>> Will write a patch.
>
> Thanks, I'm out of time for today.

See attached, which also removes the ENOSYS stuff which I believe to
be now useless. Does this make sense? Survives make check-world and
my simple test procedure on a
3.10.0-327.36.1.el7.x86_64 system.

postgres=# select test_dsm(1000000000000);
ERROR: could not resize shared memory segment
"/PostgreSQL.2043796572" to 1000000000000 bytes: No space left on
device
postgres=# select test_dsm(1000);
test_dsm
----------

(1 row)

--
Thomas Munro
http://www.enterprisedb.com

Attachment Content-Type Size
0001-Fix-error-handling-for-posix_fallocate.patch application/octet-stream 1.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2017-09-25 21:49:37 Re: CREATE COLLATION does not sanitize ICU's BCP 47 language tags. Should it?
Previous Message Tom Lane 2017-09-25 21:12:33 Re: Server crash due to SIGBUS(Bus Error) when trying to access the memory created using dsm_create().