Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 162ade6

Browse files
committed
Fix assertion failure and segmentation fault in backup code.
When a non-exclusive backup is canceled, do_pg_abort_backup() is called and resets some variables set by pg_backup_start (pg_start_backup in v14 or before). But previously it forgot to reset the session state indicating whether a non-exclusive backup is in progress or not in this session. This issue could cause an assertion failure when the session running BASE_BACKUP is terminated after it executed pg_backup_start and pg_backup_stop (pg_stop_backup in v14 or before). Also it could cause a segmentation fault when pg_backup_stop is called after BASE_BACKUP in the same session is canceled. This commit fixes the issue by making do_pg_abort_backup reset that session state. Back-patch to all supported branches. Author: Fujii Masao Reviewed-by: Kyotaro Horiguchi, Masahiko Sawada, Michael Paquier, Robert Haas Discussion: https://postgr.es/m/3374718f-9fbf-a950-6d66-d973e027f44c@oss.nttdata.com
1 parent 5630f39 commit 162ade6

File tree

1 file changed

+2
-0
lines changed
  • src/backend/access/transam

1 file changed

+2
-0
lines changed

src/backend/access/transam/xlog.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11645,6 +11645,8 @@ do_pg_abort_backup(int code, Datum arg)
1164511645
{
1164611646
XLogCtl->Insert.forcePageWrites = false;
1164711647
}
11648+
11649+
sessionBackupState = SESSION_BACKUP_NONE;
1164811650
WALInsertLockRelease();
1164911651

1165011652
if (emit_warning)

0 commit comments

Comments
 (0)