BUG #14208: Inconsistent code modification - 3

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.

Responses

Browse pgsql-bugs by date

  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