Re: Return pg_control from pg_backup_stop().

From: Greg Burd <greg(at)burd(dot)me>
To: David Steele <david(at)pgbackrest(dot)org>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, "Burd, Greg" <gregburd(at)amazon(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, "hlinnaka(at)iki(dot)fi" <hlinnaka(at)iki(dot)fi>, "robertmhaas(at)gmail(dot)com" <robertmhaas(at)gmail(dot)com>, "andres(at)anarazel(dot)de" <andres(at)anarazel(dot)de>, "masao(dot)fujii(at)gmail(dot)com" <masao(dot)fujii(at)gmail(dot)com>, "solai(dot)cdac(at)gmail(dot)com" <solai(dot)cdac(at)gmail(dot)com>
Subject: Re: Return pg_control from pg_backup_stop().
Date: 2026-10-30 16:04:13
Message-ID: lqL7obyK3j2CNqu1cGOn30sGeecFqTr5F1qSkKbl7s34Hp8ikYfnksRe-UbX8eTOlQBB6ATMo6AHccHB2RcYMugOJo8j5WvQNwWdTo38hDI=@burd.me
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On Friday, October 30th, 2026 at 4:34 AM, David Steele <david(at)pgbackrest(dot)org> wrote:

> On 10/30/26 00:08, Michael Paquier wrote:
> > On Thu, Oct 29, 2026 at 06:11:39PM +0000, Burd, Greg wrote:
> >> Validation of c97931c16d on the same machine: with it applied, three
> >> runs each of both reproductions give the WARNING and ERROR and no
> >> crash, and t/010_pg_basebackup.pl passes all 168 tests with no
> >> backend crash in the server logs. With it reverted, the same TAP run
> >> logs the SIGSEGV. The test still reports PASS in that case because
> >> it only checks that pg_basebackup fails.
> >
> > Ah, thanks for the in-depth investigation. So the previous guess was
> > really right. Candles work.
>
> Thank you, Greg! This is exactly the confirmation we needed.

Hey David, happy to help. As I said to Michael, now I can write off that
UltraSPARC 45 and the power it gobbles up on my taxes with proof that it
is used for work.

> I would encourage you to file a bug with gcc. I've found a few bugs and
> the gcc folks are really easy to work with. Since you have a repro it
> will be easy to produce the pre-processed output they want.

Sure, I'll carve out some time to do that.

> One bad thing -- even if they fix the bug, distros may choose not to
> back patch it (so it may already be fixed). I had to maintain a patch
> for a gcc bug on ppc64le for years before the affected distros EOL'd.
> That bug limited where I could use const, which was pretty annoying.

But that's the life of an open source developer, right? I signed up for
it so I can't complain. Or if I do, you should ignore me.

> >> I don't see a better fix on our side. A helper function with
> >> the array would also work, but palloc0() is simpler, and both rely on
> >> the same thing: no PG_TRY() frame larger than 4kB. In a core build
> >> on this machine, the only other function with a frame that large that
> >> calls sigsetjmp() is be_lo_export() (char buf[BUFSIZE]). Its code
> >> after sigsetjmp() reloads the constant, so it is fine today, but only
> >> by luck of register allocation. I haven't checked contrib or other
> >> GCC versions or as mentioned earlier against their bug system.
> >
> > Ugh. Even if the buffer itself is not used within the try/catch
> > block itself?
>
> Apparently so -- the failure of the base backup cancel test showed that.
> The buffer was never used and just the larger frame caused the problem.

I agree.

> > Getting entirely rid of the TRY/CATCH would lead to a
> > much nicer result overall: we'd be able to keep the local buffer. Or
> > perhaps go to the simpler solution of a palloc/pfree? I cannot
> > believe that this extra allocation would matter for lo_export() calls.
>
> palloc/pfree seems like the simpler solution.

+1

> > If you are proved to be right, it sounds to me that we ought to
> > fix and backpatch that as well, especially if there is nothing we can
> > do on the Postgres side. I don't believe in luck and magic when it
> > comes to software programming.
> I've attached a patch for be_lo_export(). Working around compiler bugs
> is never fun but I'm not sure what choice we have.

I've not reviewed the patch yet, but it is on my queue.

> Regards,
> -David

best.

-greg

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Nathan Bossart 2026-10-30 16:11:40 Re: [PATCH] Corruption Issue: Fix missing tts_tid in ExecForceStoreHeapTuple
Previous Message Greg Burd 2026-10-30 15:59:59 Re: Return pg_control from pg_backup_stop().