Re: new heapcheck contrib module

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: new heapcheck contrib module
Дата
Msg-id 43209.1603400779@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: new heapcheck contrib module  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: new heapcheck contrib module  (Mark Dilger <mark.dilger@enterprisedb.com>)
Re: new heapcheck contrib module  (Mark Dilger <mark.dilger@enterprisedb.com>)
Список pgsql-hackers
I wrote:
> Mark Dilger <mark.dilger@enterprisedb.com> writes:
>> It is seeking to position 32 and writing '\x77\x77\x77\x77'.  x86_64 is
>> little-endian, and ppc32 and sparc64 are both big-endian, right?

> They are, but that should not meaningfully affect the results of
> that corruption step.  You zapped only one line pointer not
> several, but it would look the same regardless of endiannness.

Oh, wait a second.  ItemIdData has the flag bits in the middle:

typedef struct ItemIdData
{
    unsigned    lp_off:15,        /* offset to tuple (from start of page) */
                lp_flags:2,       /* state of line pointer, see below */
                lp_len:15;        /* byte length of tuple */
} ItemIdData;

meaning that for that particular bit pattern, one endianness
is going to see the flags as 01 (LP_NORMAL) and the other as 10
(LP_REDIRECT).  The offset/len are corrupt either way, but
I'd certainly expect that amcheck would produce different
complaints about those two cases.  So it's unsurprising if
this test case's output is endian-dependent.

            regards, tom lane



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

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