Re: free(): invalid pointer , when to dumping data to a new server

Поиск
Список
Период
Сортировка
От Magnus Hagander
Тема Re: free(): invalid pointer , when to dumping data to a new server
Дата
Msg-id CABUevEyjxEPMdR47HOwdLAJjmNu97q4PS-XU6Obemcaf6rsrBw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: free(): invalid pointer , when to dumping data to a new server  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: free(): invalid pointer , when to dumping data to a new server
Список pgsql-admin
On Tue, Oct 27, 2020 at 5:52 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Lars Aksel Opsahl <Lars.Opsahl@nibio.no> writes:
> > (gdb) bt
> > #0  0x00007fa9c241e70f in raise () from /lib64/libc.so.6
> > #1  0x00007fa9c2408b25 in abort () from /lib64/libc.so.6
> > #2  0x00007fa9c2461897 in __libc_message () from /lib64/libc.so.6
> > #3  0x00007fa9c2467fdc in malloc_printerr () from /lib64/libc.so.6
> > #4  0x00007fa9c24698dc in _int_free () from /lib64/libc.so.6
> > #5  0x00007f992fe099f9 in osgeo::proj::common::UnitOfMeasure::~UnitOfMeasure() () from /lib64/libproj.so.15
> > #6  0x00007fa9c2420e9c in __run_exit_handlers () from /lib64/libc.so.6
> > #7  0x00007fa9c2420fd0 in exit () from /lib64/libc.so.6
> > #8  0x000000000075beb0 in proc_exit (code=code@entry=0) at ipc.c:152
> > #9  0x000000000077fd21 in PostgresMain (argc=<optimized out>, argv=argv@entry=0x182b6d8, dbname=<optimized out>,
username=<optimizedout>) at postgres.c:4455
 
> > #10 0x00000000007085a1 in BackendRun (port=0x1819b90, port=0x1819b90) at postmaster.c:4448
> > #11 BackendStartup (port=0x1819b90) at postmaster.c:4139
> > #12 ServerLoop () at postmaster.c:1704
> > #13 0x00000000007094d0 in PostmasterMain (argc=argc@entry=3, argv=argv@entry=0x17e7800) at postmaster.c:1377
> > #14 0x0000000000482c7e in main (argc=3, argv=0x17e7800) at main.c:228
>
> OK, I'd say that definitely puts the bug outside of core Postgres.
> It looks like proj has installed an atexit() handler that is trying
> to free something that was already freed.  This might be proj's
> fault directly, or perhaps a caller did something wrong (a likely
> bet, perhaps, is using palloc for something that proj expects to
> survive till program exit).
>
> Probably the next step is to take this to the postgis support lists
> and see what they think about it.


FYI, looking at this one in a bit more details it looks like it's
standard C++ destructors -- they're added to the list of exit handlers
automatically when C++ is used, AIUI.

Still leaves the problem with postgis/proj of course, but as a
noteworthy detail. It's not as easy as an explicit atexit().

However, mostly this looks like a packaging issue on RHEL8, or more
likely a combination of a packaging issue and some updated packages
that somehow trigger a new issue. It seems to load multiple versions
of some of the required C++ libraries at the same time, and I bet
they're conflicting with each other.

--
 Magnus Hagander
 Me: https://www.hagander.net/
 Work: https://www.redpill-linpro.com/



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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Creating a partition table
Следующее
От: John Scalia
Дата:
Сообщение: More on my partitioning problem