BUG #9190: Could not fsync file "pg_clog/0000": Bad file descriptor. - Mailing list pgsql-bugs

From dvitek@grammatech.com
Subject BUG #9190: Could not fsync file "pg_clog/0000": Bad file descriptor.
Date
Msg-id 20140211222906.2717.71884@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #9190: Could not fsync file "pg_clog/0000": Bad file descriptor.
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      9190
Logged by:          David Vitek
Email address:      dvitek@grammatech.com
PostgreSQL version: 9.2.4
Operating system:   Windows 8
Description:

We had a postgres panic a few weeks ago.  Here is a relevant fragment of the
postgres log:

[2014-01-27 04:57:37 EST 3756] WARNING:  pgstat wait timeout
...
...
...
[2014-01-27 04:55:36 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 04:55:42 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
...
repeats tens of times, interspersed with pgstat timetouts.
...
[2014-01-27 05:40:40 EST 5804] ERROR:  could not fsync file
"base/16384/17033": Bad file descriptor
[2014-01-27 05:42:20 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 05:42:20 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 05:43:30 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 05:43:30 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 05:44:53 EST 5804] ERROR:  could not fsync file
"base/16384/11768": Bad file descriptor
...
both flavors of errors continue repeating for hours.
...
[2014-01-27 09:00:44 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:00:54 EST 4604] WARNING:  pgstat wait timeout
[2014-01-27 09:01:14 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:01:24 EST 5992] WARNING:  pgstat wait timeout
[2014-01-27 09:02:12 EST 3420] LOG:  duration: 16231.000 ms  statement:
COMMIT
[2014-01-27 09:02:42 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:02:42 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:02:44 EST 2324] LOG:  duration: 44583.000 ms  statement:
COMMIT
[2014-01-27 09:03:01 EST 2324] LOG:  duration: 11760.000 ms  statement:
COMMIT
[2014-01-27 09:03:20 EST 2324] LOG:  duration: 12952.000 ms  statement:
COMMIT
[2014-01-27 09:03:44 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:03:54 EST 8188] WARNING:  pgstat wait timeout
[2014-01-27 09:04:14 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:04:24 EST 3988] WARNING:  pgstat wait timeout
[2014-01-27 09:04:27 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:04:27 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:05:38 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:05:38 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:05:40 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:05:50 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:05:51 EST 4280] WARNING:  pgstat wait timeout
[2014-01-27 09:06:01 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:06:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:06:51 EST 4976] WARNING:  pgstat wait timeout
[2014-01-27 09:06:51 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:06:51 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:07:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:07:21 EST 4368] WARNING:  pgstat wait timeout
[2014-01-27 09:07:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:07:51 EST 1416] WARNING:  pgstat wait timeout
[2014-01-27 09:08:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:08:11 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:08:11 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:08:21 EST 4580] WARNING:  pgstat wait timeout
[2014-01-27 09:08:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:08:51 EST 8124] WARNING:  pgstat wait timeout
[2014-01-27 09:09:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:09:25 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:09:25 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:10:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:10:41 EST 5804] ERROR:  could not access status of
transaction 0
[2014-01-27 09:10:41 EST 5804] DETAIL:  Could not fsync file "pg_clog/0000":
Bad file descriptor.
[2014-01-27 09:11:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:11:51 EST 5140] WARNING:  pgstat wait timeout
[2014-01-27 09:12:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:12:21 EST 4608] WARNING:  pgstat wait timeout
[2014-01-27 09:12:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:12:51 EST 7080] WARNING:  pgstat wait timeout
[2014-01-27 09:13:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:13:21 EST 5836] WARNING:  pgstat wait timeout
[2014-01-27 09:13:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:13:51 EST 1788] WARNING:  pgstat wait timeout
[2014-01-27 09:14:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:14:21 EST 672] WARNING:  pgstat wait timeout
[2014-01-27 09:14:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:14:51 EST 7368] WARNING:  pgstat wait timeout
[2014-01-27 09:15:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:15:21 EST 6940] WARNING:  pgstat wait timeout
[2014-01-27 09:16:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:16:21 EST 3944] WARNING:  pgstat wait timeout
[2014-01-27 09:16:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:16:51 EST 4620] WARNING:  pgstat wait timeout
[2014-01-27 09:17:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:17:21 EST 6728] WARNING:  pgstat wait timeout
[2014-01-27 09:17:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:17:51 EST 5476] WARNING:  pgstat wait timeout
[2014-01-27 09:18:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:18:21 EST 2652] WARNING:  pgstat wait timeout
[2014-01-27 09:18:41 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:18:51 EST 7944] WARNING:  pgstat wait timeout
[2014-01-27 09:19:11 EST 7536] WARNING:  pgstat wait timeout
[2014-01-27 09:21:04 EST 3080] PANIC:  could not fsync file
"pg_xlog/xlogtemp.3080": Bad file descriptor
[2014-01-27 09:23:01 EST 5404] LOG:  WAL writer process (PID 3080) exited
with exit code 3
[2014-01-27 09:23:07 EST 5404] LOG:  terminating any other active server
processes

We ran into this issue one time on one computer.  We are unable to reproduce
the issue.  It has been exposed to the same workload many times before and
since.  The machine was under fairly heavy load when this happened.  The
database load was likely write-heavy.  Many recent commit statements took >
10 seconds to push through, and there's a good chance auto-vacuum was
competing.

It is a 64-bit Windows 8.0 machine with fairly normal consumer grade
hardware.  The disk is a local NTFS disk.  There is no antivirus software on
the system.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #9187: corrupt toast tables
Next
From: Bruce Momjian
Date:
Subject: Re: BUG #9117: PGXAConnection - equals method returning false