Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG
KOPOSOV Sergey <sergey.koposov@ed.ac.uk>
From: Sergey KOPOSOV <Sergey.Koposov@ed.ac.uk>
To: "tgl@sss.pgh.pa.us" <tgl@sss.pgh.pa.us>
Cc: "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2021-03-31T21:45:08Z
Lists: pgsql-bugs
Attachments
- xx1.short (model/x.stl-binary)
On Wed, 2021-03-31 at 17:27 -0400, Tom Lane wrote:
> This email was sent to you by someone outside the University.
> You should only click on links or attachments if you are certain that the email is genuine and the content is safe.
>
> PG Bug reporting form <noreply@postgresql.org> writes:
> > I have a reproducible case of segfaulting pg_restore when trying to restore
> > from pg_dump of a different version. Specifically at least pg_restore from
> > 10 crashes from pg_dump 12.
>
> When I try that I get
>
> pg_restore: [archiver] unsupported version (1.14) in file header
>
> and that test is done first thing in ReadHead(), before the place
> you identify. I suspect you are dealing with a corrupt archive
> file, not a version mismatch.
I am pretty sure that is not the case.
I've just done that now
skoposov_remote@wsdb:~/postgresql-10.16$ ssh -o Compression=no koposov@HOSTNAME '/opt/pgsql/bin/pg_dump -n SCHEMA -Fc -U dbadmin wsdb' | head -c 32768 >
xx.short
(obviously the crash doesn't happen even if I don't put 'head -n ...')
skoposov_remote@wsdb:~/postgresql-10.16$ cat xx.short | pg_restore -U dbadmin -h localhost -d wsdb
Segmentation fault (core dumped)
I attach the file (1 kb of it)
I also noticed when I tried to run pg_restore in the debugger the crash doesn't happen.
gdb --args pg_restore -U dbadmin -h localhost -d wsdb
(gdb) run < /tmp/xx.short
Starting program: /usr0/home/skoposov_remote/postgresql-10.16/src/bin/pg_dump/pg_restore < /tmp/xx.short
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
pg_restore: [archiver] unsupported version (1.14) in file header
[Inferior 1 (process 14109) exited with code 01]
but it does if I pipe it...
Sergey
The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. Is e buidheann carthannais a th’ ann an Oilthigh Dhùn Èideann, clàraichte an Alba, àireamh clàraidh SC005336.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix pg_restore's misdesigned code for detecting archive file format.
- ec03f2df17a8 14.0 landed
- 84c5e0dd2e73 12.7 landed
- 35421a470de1 13.3 landed
- 2c9b857afbcf 9.6.22 landed
- 25fe401d5350 11.12 landed
- 1b6961c8fec8 10.17 landed