I wrote: > * frame #0: 0x000000010a36af8c postgres`ParseCommitRecord(info='\x80', > xlrec=0x00007fa0678a8090, parsed=0x00007ff7b5c50e78) at xactdesc.c:102:30
Okay, so the problem is this: by widening RelFileNumber to 64 bits, you have increased the alignment requirement of struct RelFileLocator, and thereby also SharedInvalidationMessage, to 8 bytes where it had been 4. longfin's alignment check is therefore expecting that xl_xact_twophase will likewise be 8-byte-aligned, but it isn't: (lldb) p data (char *) $0 = 0x00007fa06783a0a4 "\U00000001" I'm not sure whether the code that generates commit WAL records is breaking a contract it should maintain, or xactdesc.c needs to be taught to not assume that this data is adequately aligned. There is a second problem that I am going to hold your feet to the fire about: (lldb) p sizeof(SharedInvalidationMessage) (unsigned long) $1 = 24 We have sweated a good deal for a long time to keep that struct to 16 bytes. I do not think 50% bloat is acceptable. regards, tom lane