Re: Help - corruption issue?

From: tv(at)fuzzy(dot)cz
To: "Phoenix Kiula" <phoenix(dot)kiula(at)gmail(dot)com>
Cc: tv(at)fuzzy(dot)cz, pgsql-general(at)postgresql(dot)org
Subject: Re: Help - corruption issue?
Date: 2011-04-22 12:20:16
Message-ID: 1ea7c2ad8f177bca59a325e9235bf039.squirrel@sq.gransy.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> On Fri, Apr 22, 2011 at 7:07 PM, <tv(at)fuzzy(dot)cz> wrote:
> In the pg_dumpall backup process, I get this error. Does this help?
>

Well, not really - it's just another incarnation of the problem we've
already seen. PostgreSQL reads the data, and at some point it finds out it
needs to allocate 4294967293B of memory. Which is strange, because it's
actually a negative number (-3 AFAIK).

It's probably caused by data corruption (incorrect length for a field).

There are ways to find out more about the cause, e.g. here:

http://archives.postgresql.org/pgsql-hackers/2005-10/msg01198.php

but you need to have a pg compiled with debug support. I guess the
packaged version does not support that, but maybe you can get the sources
and compile them on your own.

If it really is a data corruption, you might try to locate the corrupted
blocks like this:

-- get number of blocks
SELECT relpages FROM pg_class WHERE relname = 'table_name';

-- get items for each block (read the problematic column)
FOR block IN 1..relpages LOOP
SELECT AVG(length(colname)) FROM table_name WHERE ctid >=
'(block,0)'::ctid AND ctid < '(block+1,0)'::ctid;

and once it fails remember the block ID (and restart - there might be more).

regards
Tomas

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Phoenix Kiula 2011-04-22 12:26:24 Re: Help - corruption issue?
Previous Message Phoenix Kiula 2011-04-22 11:54:07 Re: Help - corruption issue?