Re: BUG #17462: Invalid memory access in heapam_tuple_lock

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: anisimow.d@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2022-04-11T20:32:03Z
Lists: pgsql-bugs
Hi,

On 2022-04-11 15:59:30 -0400, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > On 2022-04-11 15:25:12 -0400, Tom Lane wrote:
> >> That seems like a fairly clean idea, although I think we can't use it
> >> in the back branches without an ABI break.  We're not going to find a
> >> TID's worth of padding space in struct SnapshotData.
> 
> > I guess we could put members of SnapshotData into a union with ItemPointerData
> > that aren't used by InitDirtySnapshot()/HeapTupleSatisfiesDirty().
> 
> Yeah, that could work.  You want to draft a patch, or shall I?

If you would, I'd appreciate it.  I've to finish a talk I'm giving tomorrow,
and I want to fix the recovery conflict bug - it's triggering the bug like
half the time on CI...

Greetings,

Andres Freund



Commits

  1. Prevent access to no-longer-pinned buffer in heapam_tuple_lock().

  2. Add Valgrind buffer access instrumentation.

  3. tableam: Add tuple_{insert, delete, update, lock} and use.