Re: pg_dumpall failing from possible corrupted shared memory

From: Richard Broersma Jr <rabroersma(at)yahoo(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: General PostgreSQL List <pgsql-general(at)postgresql(dot)org>
Subject: Re: pg_dumpall failing from possible corrupted shared memory
Date: 2006-10-27 02:09:12
Message-ID: 820639.80330.qm@web31804.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> What this looks like is that there's a mangled expression string in
> the catalog entry for either a check constraint or an expression index.
> The backend is dying while trying to decompile the expression for
> pg_dump.

you were write, I appears that my problem is with one of four functional date_trunc indexs that I
created for a timespace column.

Here is a greatly simplified query that still succeeds:

mydb=# select indexrelid from pg_index where indrelid = '16737';
indexrelid
------------
604243
604251
604252
604253
604254
(5 rows)

However, when I add the following function it breaks:

mydb=# select pg_get_indexdef(indexrelid) from pg_index where indrelid = '16737';
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

> What I suggest doing is turning on log_statement = all and running
> pg_dump, so that you can see the query it's dying on. That would give
> you enough info to look into the catalog entry for the constraint or
> index at hand. Worst-case, you can probably fix things by dropping and
> recreating the constraint or index ...log_min_messages = info but before you do that, I'd urge
> you to try to get as much info as you can about the nature of the
> catalog corruption. If there's a bug here, as opposed to random
> cosmic-ray damage, we can't fix it without more info.

The logs aren't really providing anymore information since I was already using "all". However, I
turned log_min_messages from "warning to "info".

%mydb LOG: statement:
select pg_get_indexdef(indexrelid)
from pg_index
where indrelid = '16737';
% LOG: server process (PID 16099) was terminated by signal 11
% LOG: terminating any other active server processes
% LOG: all server processes terminated;
reinitializing
% LOG: database system was interrupted at 2006-10-26 18:09:09 PDT
% LOG: checkpoint record is at 0/8E9161A8
% LOG: redo record is at 0/8E9161A8;
undo record is at 0/0;
shutdown TRUE
% LOG: next transaction ID: 174591; next OID: 621178
% LOG: next MultiXactId: 53; next MultiXactOffset: 115
% LOG: database system was not properly shut down;
automatic recovery in progress
%mydb FATAL: the database system is starting up
% LOG: record with zero length at 0/8E9161EC
% LOG: redo is not required
% LOG: database system is ready
% LOG: transaction ID wrap limit is 1073790580,
limited by database "postgres"

Thanks for the help Tom.

Regards,

Richard Broersma Jr.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Joshua D. Drake 2006-10-27 02:11:59 Re: database not enforcing unqiue constriant
Previous Message Merlin Moncure 2006-10-27 02:00:13 database not enforcing unqiue constriant