I was seeing SIGBUS errors when running TigerVNC inside the record code because the offsets into the memory buffer were not sufficiently aligned to use the RecordSetRec (alignof(void*)). The current code ensures that all offsets are alinged to sizeof(unsigned long), but that may not be sufficient to load/store a pointer. Architectures where this is not true include Arm Morello which has 16-byte pointers and 8-byte longs.
The current patch uses C11 _Alignof which I believe means it cannot be merged yet. However, I am posting this MR now to see which _Alignof() workaround is preferred: emulation using a struct + offsetof() or using the approximation of sizeof(void*) which happens to be the same as _Alignof(BitVectorSet)/_Alignof(IntervalListSet)/_Alignof(RecordSetRec).