Thread: BUG #4910: pg_restore fails on linux but success on win, buffer dirty

BUG #4910: pg_restore fails on linux but success on win, buffer dirty

From
"Eugen Kraynovych"
Date:
The following bug has been logged online:

Bug reference:      4910
Logged by:          Eugen Kraynovych
Email address:      y.kraynovych@web.de
PostgreSQL version: 8.3.7
Operating system:   Gentoo 2.6.14 hardened
Description:        pg_restore fails on linux but success on win, buffer
dirty
Details:

Hello,
we have had a servercrash, after that the PG would re-installed. Now i was
restoring the DBs, it was OK bei 3 little DBs, but fails on import of data
bei

curtain tables for other 2 DBs with "pg_restore: [archiver (db)] error
returned by PQputCopyData: server closed the connection unexpectedly". I am
restoring with "pg_restore -d dbname -F c ./database-backup -v -U
username".
See the log message with bad/dirty buffer below.
I have tried to import the DBs on another machine with PG 8.1 and 8.4, with
the same error. The Import succeeded only on Windows XP SP3 (also PG 8.3.7).
The

postgresql.conf on Windows had greater shared_buffers and max_fsm_pages
values, but as i made same values (32MB and 204800) on linux i became the
error

again.
Have somebody probably a hint?
--------------------------------------
...
LOG:  00000: statement: COPY attach_data (id, thedata) FROM stdin;
LOCATION:  exec_simple_query, postgres.c:848
...
PANIC:  XX000: bad buffer id: 2049
CONTEXT:  COPY attach_data, line 207: "164
\\320\\317\\021\\340\\241\\261\\032\\341\\000\\000\\000\\000\\000\\000\\000\
\000\\000\\000\\000\..."
LOCATION:  MarkBufferDirty, bufmgr.c:785
STATEMENT:  COPY attach_data (id, thedata) FROM stdin;
LOG:  00000: server process (PID 14589) was terminated by signal 6: Aborted
LOCATION:  LogChildExit, postmaster.c:2529
LOG:  00000: terminating any other active server processes
LOCATION:  HandleChildCrash, postmaster.c:2374
WARNING:  57P02: terminating connection because of crash of another server
process
DETAIL:  The postmaster has commanded this server process to roll back the
current transaction and exit, because another server process exited
abnormally and possibly corrupted shared memory.
....
LOCATION:  quickdie, postgres.c:2510
LOG:  00000: all server processes terminated; reinitializing
LOCATION:  PostmasterStateMachine, postmaster.c:2690
LOG:  00000: shmctl(12779520, 0, 0) failed: Invalid argument
LOCATION:  IpcMemoryDelete, pg_shmem.c:178
LOG:  00000: database system was interrupted; last known up at 2009-07-09
12:50:37 CEST
LOCATION:  StartupXLOG, xlog.c:4836
DEBUG:  00000: checkpoint record is at 0/3AAEA970
LOCATION:  StartupXLOG, xlog.c:4906
DEBUG:  00000: redo record is at 0/3AAEA970; shutdown FALSE
LOCATION:  StartupXLOG, xlog.c:4932
DEBUG:  00000: next transaction ID: 0/19359; next OID: 2464384
LOCATION:  StartupXLOG, xlog.c:4936
DEBUG:  00000: next MultiXactId: 1; next MultiXactOffset: 0
LOCATION:  StartupXLOG, xlog.c:4939
LOG:  00000: database system was not properly shut down; automatic recovery
in progress
LOCATION:  StartupXLOG, xlog.c:5003
LOG:  00000: redo starts at 0/3AAEA9B0
LOCATION:  StartupXLOG, xlog.c:5065
LOG:  00000: unexpected pageaddr 0/38744000 in log file 0, segment 59,
offset 7618560
LOCATION:  ValidXLOGHeader, xlog.c:3408
LOG:  00000: redo done at 0/3B7437D8
LOCATION:  StartupXLOG, xlog.c:5135
LOG:  00000: last completed transaction was at log time 2009-07-09
12:51:18.997133+02
LOCATION:  StartupXLOG, xlog.c:5139
DEBUG:  00000: transaction ID wrap limit is 2147484026, limited by database
"template1"
LOCATION:  SetTransactionIdLimit, varsup.c:283
LOG:  00000: autovacuum launcher started
LOCATION:  AutoVacLauncherMain, autovacuum.c:520
LOG:  00000: database system is ready to accept connections
...
"Eugen Kraynovych" <y.kraynovych@web.de> writes:
> PANIC:  XX000: bad buffer id: 2049
> CONTEXT:  COPY attach_data, line 207: "164
> \\320\\317\\021\\340\\241\\261\\032\\341\\000\\000\\000\\000\\000\\000\\000\
> \000\\000\\000\\000\..."

Huh, that's interesting.  This is repeatable from a fresh initdb?
Could you make the dump file that triggers it available for testing?

            regards, tom lane