Re: Crash after a call to pg_backup_start() - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: Crash after a call to pg_backup_start()
Date
Msg-id Y1KgMNnhbF8h8/T8@paquier.xyz
Whole thread Raw
In response to Re: Crash after a call to pg_backup_start()  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: Crash after a call to pg_backup_start()  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Re: Crash after a call to pg_backup_start()  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
List pgsql-hackers
On Fri, Oct 21, 2022 at 05:53:25PM +0800, Richard Guo wrote:
> Yeah, the two conditions could be both false. How about we update the
> comment a bit to emphasize this? Such as
>
>     /* At most one of these conditions can be true */
> or
>     /* These conditions can not be both true */

If you do that, it would be a bit easier to read as of the following
assertion instead?  Like:
Assert(!during_backup_start ||
       sessionBackupState == SESSION_BACKUP_NONE);

Please note that I have not checked in details all the interactions
behind register_persistent_abort_backup_handler() before entering in
do_pg_backup_start() and the ERROR_CLEANUP block used in this
routine (just a matter of some elog(ERROR)s put here and there, for
example).  Anyway, yes, both conditions can be false, and that's easy
to reproduce:
1) Do pg_backup_start().
2) Do pg_backup_stop().
3) Stop the session to kick do_pg_abort_backup()
4) Assert()-boom.
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: cross-platform pg_basebackup
Next
From: Japin Li
Date:
Subject: Re: parse partition strategy string in gram.y