From: | Andres Freund <andres(at)citusdata(dot)com> |
---|---|
To: | Hadi Moshayedi <hadi(at)moshayedi(dot)net> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Ozgun Erdogan <ozgun(at)citusdata(dot)com>, Sumedh Pathak <sumedh(at)citusdata(dot)com> |
Subject: | Re: [PATCH] Fix crash in int8_avg_combine(). |
Date: | 2017-11-26 03:47:08 |
Message-ID: | 20171126034708.g7kzc3gddmppljuo@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Hadi,
On 2017-11-25 22:43:49 -0500, Hadi Moshayedi wrote:
> While doing some tests on REL_10_STABLE, I was getting run-time exceptions
> at int8_avg_combine() at the following line:
>
> state1->sumX = state2->sumX;
>
> After some debugging, I noticed that palloc()’s alignment is 8-bytes, while
> this statement (which moves a __int128 from one memory location to another
> memory location) expects 16-byte memory alignments. So when either state1
> or state2 is not 16-byte aligned, this crashes.
>
> When I disassemble the code, the above statement is translated to a pair of
> movdqa and movaps assignments when compiled with -O2:
>
> movdqa c(%rdx), %xmm0
> movaps %xmm0, c(%rcx)
>
> Looking at “Intel 64 and IA-32 Architectures Software Developer’s Manual,
> Volume 2”, both of these instructions expect 16-byte aligned memory
> locations, or a general-protection exception will be generated.
Nicely analyzed. [Un]fortunately the bug has already been found and
fixed:
https://git.postgresql.org/pg/commitdiff/619a8c47da7279c186bb57cc16b26ad011366b73
Will be included in the next set of back branch releases.
> diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h
> index 869c59dc85..2dc59e89cd 100644
> --- a/src/include/utils/memutils.h
> +++ b/src/include/utils/memutils.h
> @@ -189,7 +189,7 @@ extern MemoryContext SlabContextCreate(MemoryContext parent,
> * Few callers should be interested in this, but tuplesort/tuplestore need
> * to know it.
> */
> -#define ALLOCSET_SEPARATE_THRESHOLD 8192
> +#define ALLOCSET_SEPARATE_THRESHOLD 16384
Huh, what's that about in this context?
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2017-11-26 03:55:00 | Re: [PATCH] Fix crash in int8_avg_combine(). |
Previous Message | Hadi Moshayedi | 2017-11-26 03:43:49 | [PATCH] Fix crash in int8_avg_combine(). |