Re: dynamic shared memory and locks - Mailing list pgsql-hackers

From Andres Freund
Subject Re: dynamic shared memory and locks
Date
Msg-id 20140106151409.GL28320@alap2.anarazel.de
Whole thread Raw
In response to Re: dynamic shared memory and locks  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On 2014-01-06 09:59:49 -0500, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> > On 2014-01-06 10:35:59 +0200, Heikki Linnakangas wrote:
> >> That assumes that you never hold more than one spinlock at a time, otherwise
> >> you can get deadlocks. I think that assumptions holds currently, because
> >> acquiring two spinlocks at a time would be bad on performance grounds
> >> anyway.
> 
> > I think that's a pretty dangerous assumption
> 
> I think it's a fine assumption.  Code that could possibly do that should
> never get within hailing distance of being committed, because you are only
> supposed to have short straight-line bits of code under a spinlock.
> Taking another spinlock breaks both the "straight line code" and the "no
> loops" aspects of that coding rule.

I think it's fair to say that no such code should be accepted - but I
personally don't trust the review process to prevent such cases and not
all spinlock usages are obvious (e.g. LockBufferHdr). And having rules
that only cause breakage in configurations that nobody ever uses doesn't
inspire much trust in that configuration.
If we go that way, we should add an Assert preventing recursive spinlock
acquiration...

Greetings,

Andres Freund

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



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: cleanup in code
Next
From: Tom Lane
Date:
Subject: Re: generic pseudotype IO functions?