From: | petrum(at)gmail(dot)com |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #14208: Inconsistent code modification - 3 |
Date: | 2016-06-22 14:48:30 |
Message-ID: | 20160622144830.5791.22512@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 14208
Logged by: Petru-Florin Mihancea
Email address: petrum(at)gmail(dot)com
PostgreSQL version: 9.4.4
Operating system: MacOSX
Description:
File: postgresql-9.4.4/src/backend/replication/logical/reorderbuffer.c
Function: ReorderBufferInterTXNInit
Line: 870
The line is
if (txn->nentries != txn->nentries_mem)
But shouldn't be there cur_txn instead of txn?
I do not know exactly the semantics of the code because I detected the
problem with a CodeSonar prototype plugin. However, let me explain why I
think it is a problem:
The line 870 is part of a processing step (lines 866-883) performed for each
sub-transaction of a transaction. Just before this code fragment, the same
processing step is performed for the toplevel transaction (lines 841-857).
The check at 845 is exactly as the one in 870.
However, the buffer of a sub-transaction is cur_txn (and not txn) and thus,
I think cur_txn should be used in 870. Moreover, in the doc comment of
nentries field it is specified that "Changes in subtransactions are *not*
included but tracked separately". Thus again, it looks that the nentries
field for a sub-transaction should be used in line 870 and not the one of
the toplevel transaction.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2016-06-22 14:48:50 | Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD |
Previous Message | Maxim Sobolev | 2016-06-22 14:38:25 | Re: BUG #14206: Switch to using POSIX semaphores on FreeBSD |