From: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
---|---|
To: | Peter <pmc(at)citylink(dot)dinoex(dot)sub(dot)org> |
Cc: | pgsql-admin(at)postgresql(dot)org, pgsql(at)FreeBSD(dot)org |
Subject: | Re: Upgrade 10.5->10.6 : db crash BUS ERROR (sig 10), reproducible |
Date: | 2019-03-08 16:51:47 |
Message-ID: | 87ef7hbal7.fsf@news-spur.riddles.org.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
>>>>> "Peter" == Peter <pmc(at)citylink(dot)dinoex(dot)sub(dot)org> writes:
Peter> esp 0x7fbfc15c 0x7fbfc15c
And there we go; the stack is misaligned. (only 4 byte alignment where
16 is expected).
Peter> eip 0x838bdf2 0x838bdf2
Peter> 0x0838bdf2 <pg_checksum_page+866>: movaps 0x20(%esp),%xmm0
MOVAPS is an SSE (not SSE2) instruction; it's enabled by virtue of the
fact that you used -march=pentium3 (the pentium3 supports SSE but not
SSE2). The "A" stands for "aligned"; an unaligned source address causes
an exception. %esp+0x20 is not correctly aligned for the instruction.
GCC defaults to using a 16-byte stack alignment, but it relies on the
caller to align the stack too, so if a GCC-compiled function is called
from code that doesn't align the stack, then this kind of error can
result. I do not know offhand (but I plan to find out) what clang's
default stack alignment on i386 is.
You can tell GCC to realign the stack itself using the -mstackrealign
option.
This problem shows up only with GCC and not with clang because clang
does not attempt to use SSE to vectorize this particular piece of code.
The non-vectorized implementation generated by clang has no special
requirements for stack alignment. But at the end of the day this is not
a problem with PostgreSQL - it would show up with any code compiled with
GCC where the compiler had elected to use SSE instructions for
optimization.
--
Andrew (irc:RhodiumToad)
From | Date | Subject | |
---|---|---|---|
Next Message | Jehan-Guillaume (ioguix) de Rorthais | 2019-03-08 16:51:49 | Re: Postgresql 9.6.12 switchover failing |
Previous Message | Shreeyansh Dba | 2019-03-08 16:40:15 | Re: Postgresql 9.6.12 switchover failing |