Re: Potential ABI breakage in upcoming minor releases
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Christoph Berg <myon@debian.org>
Cc: Pavan Deolasee <pavan.deolasee@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2024-11-14T19:17:01Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Undo unintentional ABI break in struct ResultRelInfo.
- ee33d58471de 16.6 landed
- 6bfacd368bb4 17.2 landed
- 17db248f318f 15.10 landed
- 099e711b77b8 14.15 landed
-
For inplace update durability, make heap_update() callers wait.
- 51ff46de29f6 16.5 cited
-
Fix btmarkpos/btrestrpos array key wraparound bug.
- 3fa81b62e09b 16.1 cited
-
Fix calculation of which GENERATED columns need to be updated.
- 8cd190e13a22 14.7 cited
On Thu, Nov 14, 2024 at 10:26:58AM -0800, Noah Misch wrote: > On Thu, Nov 14, 2024 at 05:29:18PM +0100, Christoph Berg wrote: > > Re: Noah Misch > > > Based on a grep of PGXN code, here are some or all of the modules that react > > > to sizeof(ResultRelInfo): > > > > > > $ grepx -r 'lloc.*ResultRelInfo' | tee /tmp/1 | sed 's/-[^:]*/:/'|sort -u > > > apacheage:: resultRelInfo = palloc(sizeof(ResultRelInfo)); > > > > Confirmed, crashing: AGE for 14..17 (12..13 seem fine) > > Can you share more about the crash, perhaps the following? > > - stack trace > - any server messages just before the crash > - which architecture (32-bit x86, 64-bit ARM, etc.) > - asserts enabled, or not? > > It's not immediately to clear to me why this would crash in a non-asserts > build. palloc issues a 512-byte chunk for sizeof(ResultRelInfo)==368 on v16, > so I expect no actual writing past the end of the chunk. I don't see > apacheage allocating a ResultRelInfo other than via one palloc per > ResultRelInfo (no arrays of them, no stack-allocated ResultRelInfo). I'll > also work on installing apacheage to get those answers locally. On x86_64, I ran these with and without asserts: install PostgreSQL 16.4 install https://github.com/apache/age/tree/master make -C age installcheck install PostgreSQL 16.5 make -C age installcheck The non-asserts build passed. The asserts build failed with "+WARNING: problem in alloc set ExecutorState: detected write past chunk" throughout the diffs, but there were no crashes. (Note that AGE "make installcheck" creates a temporary installation, unlike PostgreSQL "make installcheck".) What might differ in how you tested?