Fix alignment problem with bbsink_copystream buffer.
authorRobert Haas <rhaas@postgresql.org>
Wed, 19 Jan 2022 13:07:16 +0000 (08:07 -0500)
committerRobert Haas <rhaas@postgresql.org>
Wed, 19 Jan 2022 13:12:08 +0000 (08:12 -0500)
commit0f47e833bf6d96c1a2c5173c8e0f6c6cc30f9592
treef2ba3b3e83d45d73d7bca47803c0fd36ab4216dd
parent44129c04323e7252f9a4064278ab049966dc4499
Fix alignment problem with bbsink_copystream buffer.

bbsink_copystream wants to store a type byte just before the buffer,
but basebackup.c wants the buffer to be aligned so that it can call
PageIsNew() and PageGetLSN() on it. Therefore, instead of inserting
1 extra byte before the buffer, insert MAXIMUM_ALIGNOF extra bytes
and only use the last one.

On most machines this doesn't cause any problem (except perhaps for
performance) but some buildfarm machines with -fsanitize=alignment
dump core.

Discussion: http://postgr.es/m/CA+TgmoYx5=1A2K9JYV-9zdhyokU4KKTyNQ9q7CiXrX=YBBMWVw@mail.gmail.com
src/backend/replication/basebackup_copy.c