These things look like bugs to me:
heap_xlog_clean doesn't update the page's LSN and SUI.
heap_xlog_insert and heap_xlog_update leave random bits in the
inserted/updated tuple's t_ctid. heap_xlog_update leaves random
bits in the updated tuple's t_cmax in the "move" case.
I am not sure about what sort of visible fault these omissions could
produce; perhaps none. But they look like dangerous things IMHO.
Comments?
regards, tom lane