Re: BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)
Дата
Msg-id 12493.1263921315@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)  ("Jon Erdman (aka StuckMojo)" <postgresql@thewickedtribe.net>)
Ответы Re: BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)  (Jon Erdman <postgresql@thewickedtribe.net>)
Re: BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)  (Chris Travers <chris@metatrontech.com>)
Список pgsql-bugs
"Jon Erdman (aka StuckMojo)" <postgresql@thewickedtribe.net> writes:
> So, I still run 7.4.5 for my medical billing app, and in playing around with
> 8.5 at AustinPUG last week I discovered that if I try to restore one of my
> backups from 7.4 (produced with 7.4 pg_dump) into 8.5devel using 8.5
> pg_restore and -j 2, it immediately segfaults. 8.4 does as well.

Ouch.

> I built 8.5 with debug to get a bt and investigate what's going on, and I
> found that it's a dependency in the archive TOC that is much higher than the
> highest dump id in the TOC. This doesn't seem all that odd, considering the
> comment right above the offending block says there can be deps to things
> that aren't in the archive. This causes the code to index way off the end of
> the array of TOC entries by dumpId.

No, the problem is that back then the dependencies meant something
completely different; they were object OIDs not dump ID numbers.

I think what we have to do is forbid -j restores from archives older
than archive version 1.8 (ie, pg_dump 8.0).  It doesn't seem worth it
to try to support parallel restore from nearly-obsolete versions, and
I suspect that we couldn't do it even if we tried --- the reason the
representation got changed is that the old way simply didn't work for
any significant use of the dependency info.  Just ignoring the
dependencies, as your patch effectively proposes, is going to lead to
restore failures or worse.

It seems like a good idea to put a range check into that loop as well,
but I think it should throw error not silently ignore bad data ...

Thanks for the report!

            regards, tom lane

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: BUG #5284: Postgres CPU 100% and worker took too long to start; cancelled... Systemdown
Следующее
От: Jon Erdman
Дата:
Сообщение: Re: BUG #5288: Restoring a 7.4.5 -Fc dump using -j 2 segfaults (patch included)