Re: crash with assertions and WAL_DEBUG - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: crash with assertions and WAL_DEBUG
Date
Msg-id 53A7FA3B.2080104@vmware.com
Whole thread Raw
In response to Re: crash with assertions and WAL_DEBUG  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Responses Re: crash with assertions and WAL_DEBUG  (Andres Freund <andres@2ndquadrant.com>)
Re: crash with assertions and WAL_DEBUG  (Rahila Syed <rahilasyed90@gmail.com>)
Re: crash with assertions and WAL_DEBUG  (Alvaro Herrera <alvherre@2ndquadrant.com>)
List pgsql-hackers
On 06/21/2014 01:58 PM, Heikki Linnakangas wrote:
> It's a bit difficult to attach the mark to the palloc calls, as neither
> the WAL_DEBUG or LWLOCK_STATS code is calling palloc directly, but
> marking specific MemoryContexts as sanctioned ought to work. I'll take a
> stab at that.

I came up with the attached patch. It adds a function called
MemoryContextAllowInCriticalSection(), which can be used to exempt
specific memory contexts from the assertion. The following contexts are
exempted:

* ErrorContext
* MdCxt, which is used in checkpointer to absorb fsync requests. (the
checkpointer process as a whole is no longer exempt)
* The temporary StringInfos used in WAL_DEBUG (a new memory "WAL Debug"
context is now created for them)
* LWLock stats hash table (a new "LWLock stats" context is created for it)

Barring objections, I'll commit this to master, and remove the assertion
from REL9_4_STABLE.

- Heikki


Attachment

pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: Add the number of pinning backends to pg_buffercache's output
Next
From: Andres Freund
Date:
Subject: Re: crash with assertions and WAL_DEBUG