Re: Wierd panic with 7.4.7

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Wierd panic with 7.4.7
Date: 2005-06-28 07:08:38
Message-ID: 11752.1119942518@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Joshua D. Drake" <jd(at)commandprompt(dot)com> writes:
> 2005-06-27 16:37:53 ERROR: could not send data to client: Broken pipe
> 2005-06-27 16:37:53 PANIC: cannot abort transaction 146017848, it was
> already committed

A reasonable guess as to what happened there is:

1. Client process dies just as server is committing a transaction on its
behalf.

2. For some reason, server tries to send a message to client while it's
doing post-commit cleanup (before it gets to the point of resetting
its state to show that it's not in the transaction anymore).

3. Kernel rejects message, causing elog(ERROR), causing entry to
AbortTransaction, causing above panic.

There are a couple of big problems with this theory, though. In the
first place, there aren't any messages sent to the client during
post-commit; unless possibly it's an error message due to a failure
during post-commit, and that should have shown up in the server log.
In the second place, we don't treat communication failures as ERRORs,
so how did step 3 happen?

Do you know what the dead client was doing? Can you reproduce this?

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message ITAGAKI Takahiro 2005-06-28 07:21:10 Re: [PATCHES] O_DIRECT for WAL writes
Previous Message Dave Page 2005-06-28 07:06:27 Re: For review: Server instrumentation patch