Pushed 0001. I confirm the finding that 0002 makes TestForOldSnapshot blow up. I suppose the right fix is to pass the buffer, not just the page, rather than trying to reverse-engineer the buffer from the page.
Regarding adding the proposed checks, which I think we should clearly do, my preferred fix would be to split PageGetLSN in two: one that is applied to shared buffers, which always runs the assertion, which retains the current name, and another that is applied to other buffers, which never does but it does check that the page is not in shared_buffers and uses another name. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services