Re: BUG #14897: Segfault on statitics SQL request
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>,
Michael Paquier <michael.paquier@gmail.com>,
Vincent Lachenal <vincent.lachenal@gmail.com>,
PostgreSQL mailing lists <pgsql-bugs@postgresql.org>
Date: 2017-11-11T17:54:29Z
Lists: pgsql-bugs
Andres Freund <andres@anarazel.de> writes: > On 2017-11-11 12:41:40 -0500, Tom Lane wrote: >> Yeah, changing MAXALIGN is out of the question. I'm thinking about >> another flag bit for MemoryContextAllocExtended. Do we need to think >> about other use-cases besides int128? Should we just force 16-byte >> alignment on all architectures, or does it need to be platform-specific? > I'm not sure we want to > a) Rely on one alignment being enough for everybody. > b) Additionally burden already hot code paths with a growing number of > alignment flag tests, and the necessary math. Well, (a) we could have more flag bits later if there are other use-cases that require even stricter alignment, and (b) I do not believe that MemoryContextAllocExtended is a hot code path at present; there are not enough call sites. > How about a MemoryContextAllocAligned(context, size, alignto, flags) > that passes on most flags but adds the necessary overhead to size, and > padds the result appropriately? This'd result in hard-wiring the alignment requirement at call sites, which I think might not be a great idea. For example, one plausible future use-case is "align on cacheline boundaries". I think that would be better served by a flag like MCXT_ALLOC_ALIGN_CACHELINE than by having the callers demand a specific numeric alignment value --- it'd be a lot easier to make the alignment match actual hardware requirements if it were being inserted at one specific place. regards, tom lane
Commits
-
Prevent int128 from requiring more than MAXALIGN alignment.
- d4e38489f98a 9.5.11 landed
- 619a8c47da72 10.2 landed
- 4a15f87d2277 9.6.7 landed
- 7518049980be 11.0 landed
-
Rearrange c.h to create a "compiler characteristics" section.
- cfc157078f2e 9.5.11 landed
- a8910506757c 10.2 landed
- 6c35b3aa465e 9.6.7 landed
- 91aec93e6089 11.0 landed