On 2014-04-03 19:33:12 -0400, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> > On 2014-04-03 19:08:27 -0400, Tom Lane wrote:
> >> A somewhat more relevant concern is where are we going to keep the state
> >> data involved in all this. Since this code is, by definition, going to be
> >> called in critical sections, any solution involving internal pallocs is
> >> right out.
>
> > We actually already allocate memory in XLogInsert() :(, although only in
> > the first XLogInsert() a backend does...
>
> Ouch. I wonder if we should put an Assert(not-in-critical-section)
> into MemoryContextAlloc.
XLogInsert() is using malloc() directly, so that wouldn't detect this
case...
It's not a bad idea tho. I wonder how far the regression tests
get...
Not even through initdb. GetVirtualXIDsDelayingChkpt() is to blame.
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services