Re: [HACKERS] PATCH: two slab-like memory allocators
От | Andres Freund |
---|---|
Тема | Re: [HACKERS] PATCH: two slab-like memory allocators |
Дата | |
Msg-id | 20170306174406.pfs3as44gc7a5ps2@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: [HACKERS] PATCH: two slab-like memory allocators (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: [HACKERS] PATCH: two slab-like memory allocators
|
Список | pgsql-hackers |
On 2017-03-06 12:40:18 -0500, Robert Haas wrote: > On Wed, Mar 1, 2017 at 5:55 PM, Andres Freund <andres@anarazel.de> wrote: > > The issue was that on 32bit platforms the Datum returned by some > > functions (int2int4_sum in this case) isn't actually a separately > > allocated Datum, but rather just something embedded in a larger > > struct. That, combined with the following code: > > if (!peraggstate->resulttypeByVal && !*isnull && > > !MemoryContextContains(CurrentMemoryContext, > > DatumGetPointer(*result))) > > seems somewhat problematic to me. MemoryContextContains() can give > > false positives when used on memory that's not a distinctly allocated > > chunk, and if so, we violate memory lifetime rules. It's quite > > unlikely, given the required bit patterns, but nonetheless it's making > > me somewhat uncomfortable. > > > > Do others think this isn't an issue and we can just live with it? > > I think it's 100% broken to call MemoryContextContains() on something > that's not guaranteed to be a palloc'd chunk. I agree, but to me it seems the only fix would be to just yank out the whole optimization? - Andres
В списке pgsql-hackers по дате отправления: