Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c) - Mailing list pgsql-hackers

From Zhihong Yu
Subject Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)
Date
Msg-id CALNJ-vRCNES20LhFnv_Hd_Hn-AskEWeLHcjCi7wtWuFJDRowXQ@mail.gmail.com
Whole thread Raw
In response to Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)  (Ranier Vilela <ranier.vf@gmail.com>)
Responses Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)
List pgsql-hackers
Hi,
+               (errmsg("BaseSnapshot cant't be setup at point %X/%X",
+                       (uint32) (lsn >> 32), (uint32) lsn),
+                errdetail("Top transaction is running.")));

Did you mean this errdetail:

Top transaction is not running.

Cheers

On Sat, Feb 13, 2021 at 12:34 PM Ranier Vilela <ranier.vf@gmail.com> wrote:

Em sáb., 13 de fev. de 2021 às 01:07, Zhihong Yu <zyu@yugabyte.com> escreveu:
Hi,
How about the following patch ?

ReorderBufferSetBaseSnapshot() can return a bool to indicate whether the base snapshot is set up.

For the call by SnapBuildCommitTxn(), it seems xid is top transaction. So the return value doesn't need to be checked.
IMO anything else is better than PANIC.
Anyway, if all fails, reporting an error can contribute to checking where.

Attached a patch suggestion v2.
1. SnapBuildProcessChange returns a result of ReorderBufferSetBaseSnapshot, so the caller can act accordingly.
2. SnapBuildCommitTxn can't ignore a result from ReorderBufferSetBaseSnapshot, even if it never fails. 

regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Ranier Vilela
Date:
Subject: Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)
Next
From: Ranier Vilela
Date:
Subject: Re: Possible dereference null return (src/backend/replication/logical/reorderbuffer.c)