Re: BUG #16976: server crash when deleting via a trigger on a foreign table

Поиск
Список
Период
Сортировка
От Thomas Munro
Тема Re: BUG #16976: server crash when deleting via a trigger on a foreign table
Дата
Msg-id CA+hUKG+fp=J3+09q2sMimiO=UdJ1azczu2OkLC1jLtTDPdQs5A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #16976: server crash when deleting via a trigger on a foreign table  (Herwig Goemans <herwig.goemans@gmail.com>)
Список pgsql-bugs
On Thu, May 20, 2021 at 10:57 PM Herwig Goemans
<herwig.goemans@gmail.com> wrote:
> Thank you for your advice, I did as you asked and made a request (31) 8
> days ago but nobody seems to take this issue under his/her care. Is
> there anything that I can do to make someone look at it ?

You could contact the developers, the well known PostgreSQL support
company that owns the repo.

Unfortunately it might be hard to get anyone else to help with it,
because it requires a bunch of non-free software to test, and even if
there are easy-to-install Docker images for that these days, it still
takes time to study how to configure it, and how to install the
proprietary client libraries etc, so you'd probably need someone who
already has such a system running and ready to connect to.  For
example, you :-)

If you can compile informix_fdw yourself (perhaps adding PG_CFLAGS=-g
to its Makefile for better debug information), and post a backtrace as
described earlier, we might be able to guess what's wrong and suggest
some changes you could test, or at least you might be able to add
enough information to the bug report to help it move faster.  Since I
personally have no idea how to drive Ubuntu's core stealing system, I
recommend these steps:

First, connect with psql and find the backend's pid:

postgres=# select pg_backend_pid();
 pg_backend_pid
----------------
        3209646
(1 row)

In another shell windows, connect to that backend with gdb:

$ sudo gdb -p 3209646
...
(gdb)

Tell it to ignore SIGUSR1 (makes things simpler), and then continue:

(gdb) handle SIGUSR1 nostop noprint
Signal        Stop    Print    Pass to program    Description
SIGUSR1       No    No    Yes        User defined signal 1
(gdb) cont
Continuing.

Now back in psql, trigger the problem with your reproducer steps:
postgres=# DELETE ...;

At this point the debugger should show something like this:

Program received signal SIGSEGV, Segmentation fault.
0x00007f5cf5ce60d6 in epoll_wait (epfd=11, events=0x55b7f0fbc088,
maxevents=maxevents@entry=1, timeout=timeout@entry=60000)
    at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
30    in ../sysdeps/unix/sysv/linux/epoll_wait.c
(gdb)

(I don't expect it to show epoll_wait, that's just because I manually
killed a sleeping backend with signal 11 for illustration, but for you
it hopefully shows some code that is trying to access a NULL pointer
or something like that).  That's where you enter "bt" and it prints
out a stack of function calls and line numbers that might help us to
guess what's going wrong.



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

Предыдущее
От: Robins Tharakan
Дата:
Сообщение: Re: BUG #17022: SQL causing engine crash
Следующее
От: david@pavlotzky.nl
Дата:
Сообщение: Re: BUG #17016: Cannot sync pgdg-common repo with reposync due to failed signature check