Re: [PATCH] Fix crash in int8_avg_combine(). - Mailing list pgsql-hackers

From Andres Freund
Subject Re: [PATCH] Fix crash in int8_avg_combine().
Date
Msg-id 20171126034708.g7kzc3gddmppljuo@alap3.anarazel.de
Whole thread Raw
In response to [PATCH] Fix crash in int8_avg_combine().  (Hadi Moshayedi <hadi@moshayedi.net>)
Responses Re: [PATCH] Fix crash in int8_avg_combine().  (Hadi Moshayedi <hadi@moshayedi.net>)
List 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


pgsql-hackers by date:

Previous
From: Hadi Moshayedi
Date:
Subject: [PATCH] Fix crash in int8_avg_combine().
Next
From: Tom Lane
Date:
Subject: Re: [PATCH] Fix crash in int8_avg_combine().