Piotr Stefaniak <postgres@piotr-stefaniak.me> writes:
> But due to how ExecRowMark struct is laid out in memory, the packed
> struct ItemPointerData begins at an uneven offset, leading to misaligned
> access whenever BlockIdData is set by ItemPointerSetInvalid() (and
> likely in some other places, too).
But BlockIdData is laid out and accessed as two 16-bit fields, so there
should be no problem. On what platform exactly do you see a failure?
regards, tom lane