From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Noah Misch <noah(at)leadboat(dot)com>, Peter Geoghegan <pg(at)heroku(dot)com> |
Cc: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Pinning a buffer in TupleTableSlot is unnecessary |
Date: | 2016-11-14 18:17:29 |
Message-ID: | 20161114181729.i5wxe3trlf4cjnkz@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2016-11-14 13:12:28 -0500, Tom Lane wrote:
> Andres Freund <andres(at)anarazel(dot)de> writes:
> > On 2016-11-14 12:32:53 -0500, Tom Lane wrote:
> >> Basically my concern is that this restriction isn't documented anywhere
> >> and I'm not entirely certain it's been adhered to everywhere. I'd feel
> >> much better about it if there were some way we could verify that.
>
> > Would support for valgrind complaining about access to unpinned buffers
> > suffice?
>
> I don't think it directly addresses the issue, but certainly it'd help.
Well, it detects situations where removed pins cause "unprotected
access", but of course that doesn't protect against cases where
independent pins hide that issue.
> Do you think that's easily doable?
I think so, yes. IIRC I discussed it with Noah and Peter G. at a
conference recently. We'd basically mark the content of shared buffers
inaccessible at backend startup, and mark it accessible whenever a
PinBuffer() happens, and then inaccessible during unpinning. We probably
have to exclude the page header though, as we intentionally access them
unpinned in some cases IIRC.
- Andres
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2016-11-14 18:21:53 | Re: Pinning a buffer in TupleTableSlot is unnecessary |
Previous Message | Tom Lane | 2016-11-14 18:12:28 | Re: Pinning a buffer in TupleTableSlot is unnecessary |