Re: buffer assertion tripping under repeat pgbench load

Simon Riggs <simon@2ndquadrant.com>

From: Simon Riggs <simon@2ndQuadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Greg Smith <greg@2ndquadrant.com>, Andres Freund <andres@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-12-24T16:16:10Z
Lists: pgsql-hackers
On 24 December 2012 16:07, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Huh.  Looks a bit like overflow of the refcount, which would explain why
> it takes such a long test case to reproduce it.  But how could that be
> happening without somebody forgetting to decrement the refcount, which
> ought to lead to a visible failure in shorter tests?  Even more
> interesting that the buffer's global refcount is zero.

But we test at the end of each transaction whether any pin count is
non-zero, so it can't have slowly built up.

It would be easier for it to have decremented too many times within
just one transaction.

Something to do with tail recursion during VACUUM?

-- 
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


Commits

  1. Follow TLI of last replayed record, not recovery target TLI, in walsenders.

  2. Avoid holding vmbuffer pin after VACUUM.