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

From: Herwig Goemans <herwig(dot)goemans(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-bugs(at)lists(dot)postgresql(dot)org, PG Bug reporting form <noreply(at)postgresql(dot)org>
Subject: Re: BUG #16976: server crash when deleting via a trigger on a foreign table
Date: 2021-04-22 10:09:44
Message-ID: 813ebc08-8f81-4efe-a5f2-caac938b7741@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

I tried it again. With a previous test the trigger did not exists, that
is why it worked.

Anyway, with the trigger in place we encounter PG server crashes.

I am having trouble collection a trace file because when I attach gdb to
the process:

0x00007f99b46f7a07 in epoll_wait (epfd=5, events=0x561321b40630,
maxevents=maxevents(at)entry=1, timeout=timeout(at)entry=-1) at
../sysdeps/unix/sysv/linux/epoll_wait.c:30
30      ../sysdeps/unix/sysv/linux/epoll_wait.c: No such file or directory.
(gdb) quit

or

Reading symbols from /lib/x86_64-linux-gnu/libnss_files.so.2...Reading
symbols from
/usr/lib/debug//lib/x86_64-linux-gnu/libnss_files-2.27.so...done.
done.
0x00007fd77dc3343e in __libc_read (fd=0, buf=0x7ffc49e20010, nbytes=1)
at ../sysdeps/unix/sysv/linux/read.c:27
27      ../sysdeps/unix/sysv/linux/read.c: No such file or directory.
(gdb) quit
A debugging session is active.

        Inferior 1 [process 35694] will be detached.

And I cannot execute anything in the attached (psql) process,

it complains about a file not found , always in sysdeps. ( i do not find
this directory on the server)

Anyway when the trigger is fired, it crashes the server.

I can delete on the foreign table directly and I can delete on the
foreign table with a function that returns void instead of trigger. all
that works fine.

The function is:

 CREATE OR REPLACE FUNCTION metadblucht.test_herwig(p_enh_id int)
 RETURNS void
 LANGUAGE plpgsql
AS $function$
            BEGIN
                delete from informix.t_water_eenheid
                where enh_id = p_enh_id;
            END;
        $function$
;

When I run this function, it works fine.

SELECT metadblucht.test_herwig(38);

and the record is deleted from the foriegn table.

I can delete from the foreign table directly:

delete from informix.t_water_eenheid  where enh_id = 40;

that works fine as well.

Can you continue zith this information or do you still need the trace
file. I have no idea what I can do to resolve the issue with sysdeps not
on the server.

Kind regards,

Herwig

On 21/04/2021 15:40, Tom Lane wrote:
>> I have experienced a server crash when deleting from a table that ahs a
>> before trigger on it. The before trigger calls a function that deletes from
>> a foreign (informix) table.
> Hm, can you get a stack trace from that?
>
> https://wiki.postgresql.org/wiki/Generating_a_stack_trace_of_a_PostgreSQL_backend
>
> It seems fairly likely that the bug is in whatever FDW you're using
> rather than in core Postgres. A stack trace would help to
> confirm or refute that.
>
> regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2021-04-22 10:52:21 Re: BUG #16976: server crash when deleting via a trigger on a foreign table
Previous Message Bharath Rupireddy 2021-04-22 05:04:56 Re: BUG #16972: parameter parallel_leader_participation's category problem