Handle unaligned SerializeSnapshot() buffer.

Noah Misch <noah@leadboat.com>

Commit: 7f3112135eb67e5df56cd34b8ce662bf6a2390e9
Author: Noah Misch <noah@leadboat.com>
Date: 2017-03-02T05:03:27Z
Releases: 10.0
Handle unaligned SerializeSnapshot() buffer.

Likewise in RestoreSnapshot().  Do so by copying between the user buffer
and a stack buffer of known alignment.  Back-patch to 9.6, where this
last applies cleanly.  In master, the select_parallel test dies with
SIGBUS on "Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC", building
32-bit with gcc 4.9.2.  In 9.6 and 9.5, the buffers in question happen
to be sufficiently-aligned, and this change is mere insurance against
future 9.6 changes or extension code compromising that.

Files

PathChange+/−
src/backend/utils/time/snapmgr.c modified +40 −36