Re: BUG #14180: Segmentation fault on replication slave
От | Tom Lane |
---|---|
Тема | Re: BUG #14180: Segmentation fault on replication slave |
Дата | |
Msg-id | 20105.1465322852@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #14180: Segmentation fault on replication slave (Bo Ørsted Andresen <boa@neogrid.dk>) |
Ответы |
Re: BUG #14180: Segmentation fault on replication slave
|
Список | pgsql-bugs |
Bo Ørsted Andresen <boa@neogrid.dk> writes: >> On 2016-06-07 19:41, Andres Freund wrote: >> Any chance the running version of postgres is out of date with the installed >> binaries / debug symbols? > You mean that I upgraded without restarting postgres before the segfault? I think the reason for the lack of useful backtrace info is that we've smashed the stack. Note that the original report shows i == 3324 which is much larger than the available length of the local items[] array (408). So presumably, the passed-in "len" was bogus (much too large). If you're prepared to build a custom version of Postgres, you could try adding this to _bt_restore_page(): /* Need to copy tuple header due to alignment considerations */ memcpy(&itupdata, from, sizeof(IndexTupleData)); itemsz = IndexTupleDSize(itupdata); itemsz = MAXALIGN(itemsz); + if (i >= lengthof(items)) + elog(PANIC, "too many items on btree page"); + items[i] = (Item) from; itemsizes[i] = itemsz; i++; from += itemsz; and then you should get a core dump before the stack is clobbered. I wonder whether we shouldn't add such a check to the regular sources... regards, tom lane
В списке pgsql-bugs по дате отправления: