*** a/src/backend/storage/lmgr/predicate.c --- b/src/backend/storage/lmgr/predicate.c *************** *** 926,943 **** CheckPointPredicate(void) else { /* ! * The SLRU is no longer needed. Truncate everything. If we try to ! * leave the head page around to avoid re-zeroing it, we might not use ! * the SLRU again until we're past the wrap-around point, which makes ! * SLRU unhappy. ! * ! * While the API asks you to specify truncation by page, it silently ! * ignores the request unless the specified page is in a segment past ! * some allocated portion of the SLRU. We don't care which page in a ! * later segment we hit, so just add the number of pages per segment ! * to the head page to land us *somewhere* in the next segment. */ ! tailPage = oldSerXidControl->headPage + SLRU_PAGES_PER_SEGMENT; oldSerXidControl->headPage = -1; } --- 926,935 ---- else { /* ! * The SLRU is no longer needed. Truncate to head before we set head ! * invalid. */ ! tailPage = oldSerXidControl->headPage; oldSerXidControl->headPage = -1; }