| 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
| 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(). |