On Thu, Jan 5, 2017 at 1:02 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@gmail.com> writes: >> Not that you mention it, I think I mis-stated the problem in the >> commit message: the problem is not if the tranche is unregistered, but >> rather if it is registered but the pointer references an address that >> is no longer valid. Registering the tranche with a fixed string >> rather than a pointer into a DSM segment that can go away fixes that. > > Got it. That's fine then, but perhaps the comment on > LWLockRegisterTranche needs to be reconsidered. It's not good enough for > the tranche name to be "backend lifetime", it has to be something valid in > other backends as well. That probably means either (1) compile-time > constant in the core backend (not loadable modules!) or (2) allocated in > the main shared-memory segment.
No, I think backend-lifetime is right. The tranche registrations are all backend-local state, so there's no problem with backend A registering a string at one address and backend B registering a string at a different address. It's just important that neither of those strings goes away before the corresponding backend does. To put that another way, registration is performed separately in every backend. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers