Re: new heapcheck contrib module

Поиск
Список
Период
Сортировка
От Mark Dilger
Тема Re: new heapcheck contrib module
Дата
Msg-id 54EAF427-C96B-402F-A402-7F513CAF57EC@enterprisedb.com
обсуждение исходный текст
Ответ на Re: new heapcheck contrib module  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

> On Oct 22, 2020, at 1:23 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> ... btw, having now looked more closely at get_xid_status(), I wonder
> how come there aren't more compilers bitching about it, because it
> is very very obviously broken.  In particular, the case of
> requesting status for an xid that is BootstrapTransactionId or
> FrozenTransactionId *will* fall through to perform
> FullTransactionIdPrecedesOrEquals with an uninitialized fxid.
>
> The fact that most compilers seem to fail to notice that is quite scary.
> I suppose it has something to do with FullTransactionId being a struct,
> which makes me wonder if that choice was quite as wise as we thought.
>
> Meanwhile, so far as this code goes, I wonder why you don't just change it
> to always set that value, ie
>
>     XidBoundsViolation result;
>     FullTransactionId fxid;
>     FullTransactionId clog_horizon;
>
> +    fxid = FullTransactionIdFromXidAndCtx(xid, ctx);
> +
>     /* Quick check for special xids */
>     if (!TransactionIdIsValid(xid))
>         result = XID_INVALID;
>     else if (xid == BootstrapTransactionId || xid == FrozenTransactionId)
>         result = XID_BOUNDS_OK;
>     else
>     {
>         /* Check if the xid is within bounds */
> -        fxid = FullTransactionIdFromXidAndCtx(xid, ctx);
>         if (!fxid_in_cached_range(fxid, ctx))
>         {

Yeah, I reached the same conclusion before submitting the fix upthread.  I structured it a bit differently, but I
believefxid will now always get set before being used, though sometimes the function returns before doing either. 

I had the same thought about compilers not catching that, too.

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






В списке pgsql-hackers по дате отправления:

Предыдущее
От: Mark Dilger
Дата:
Сообщение: Re: new heapcheck contrib module
Следующее
От: Tom Lane
Дата:
Сообщение: Re: new heapcheck contrib module