Re: segmentation fault using currtid and partitioned tables

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael@paquier.xyz>
Cc: Andres Freund <andres@anarazel.de>, Alvaro Herrera <alvherre@2ndquadrant.com>, Jaime Casanova <jaime.casanova@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2020-06-01T02:26:54Z
Lists: pgsql-hackers
Michael Paquier <michael@paquier.xyz> writes:
> Woah.  This one is old, good catch from -DRELCACHE_FORCE_RELEASE.  It
> happens that since its introduction in a3519a2 from 2002,
> currtid_for_view() in tid.c closes the view and then looks at a RTE
> from it.  I have reproduced the issue and the patch attached takes
> care of the problem.  Would it be better to backpatch all the way down
> or is that not worth caring about?

Ugh.  Aside from the stale-pointer-deref problem, once we drop the lock
we can't even be sure the table still exists.  +1 for back-patch.

			regards, tom lane



Commits

  1. Fix use-after-release mistake in currtid() and currtid2() for views

  2. Fix crashes with currtid() and currtid2()