Re: [BUG FIX] Removing NamedLWLockTrancheArray

From: Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [BUG FIX] Removing NamedLWLockTrancheArray
Date: 2017-03-03 10:19:30
Message-ID: CAM103DtJdY7-vNStVM_FEp3D_85pBE1-d2VKKTOAJnDB-P5Kug@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> You can read about usage of LWLocks in extensions from below location:
> https://www.postgresql.org/docs/devel/static/xfunc-c.html#idp86986416

Thank you for the pointer. I understand that the document describes the
only correct way to use LWLock in extensions and using
LWLockRegisterTranche is a non-standard or prohibit way to do that.

By the way, in the case of orafce, it uses LWLockRegisterTranche directly
but only when !found. So if any backend other than the creator of the shmem
want to access tranche, the puch tranche is not found on the process and
crashes. I think this is it.
If no other modules is installed, registeriing a tranche even if found will
supress the crash but it is not a solution at all.

At least for 9.6 or 10, orafce should do that following the documentation.
But it still can crash from the problem by the separate
NamedLWLockTrancheArray. (ID range check in LWLockInitialize would be
useless if it is not used by extensions)

I'll continue considering this next week

regards,

---
Kyotaro Horiguchi

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2017-03-03 10:27:05 Re: Proposal : Parallel Merge Join
Previous Message Andrew Borodin 2017-03-03 10:19:28 Re: [GSoC] Personal presentation and request for clarification