Segfault with before triggers and after triggers with a WHEN clause.

From: Yoran Heling <info(at)yorhel(dot)nl>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Segfault with before triggers and after triggers with a WHEN clause.
Date: 2011-08-21 12:00:55
Message-ID: CADL1CPghUq99wiKeAXja3oUBBma9ksiSQe3fR_b5fCa0nR3KXw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hello,

After upgrading to PostgreSQL 9.0.4 (don't remember exactly where I
came from, but I believe it was an earlier 9.0.x), postgresql began to
segault on certain queries. I have managed to isolate the problem and
can reproduce the crash on a newly created and empty database with the
following queries:

CREATE TABLE some_t (some_col boolean NOT NULL);
CREATE OR REPLACE FUNCTION trig_before() RETURNS trigger AS $$
BEGIN RETURN NEW; END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION trig_after() RETURNS trigger AS $$
BEGIN RETURN NULL; END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trig_before BEFORE UPDATE ON some_t FOR EACH ROW
EXECUTE PROCEDURE trig_before();
CREATE TRIGGER trig_aftera AFTER UPDATE ON some_t FOR EACH ROW WHEN
(NOT OLD.some_col AND NEW.some_col) EXECUTE PROCEDURE trig_after();
CREATE TRIGGER trig_afterb AFTER UPDATE ON some_t FOR EACH ROW WHEN
(NOT NEW.some_col) EXECUTE PROCEDURE trig_after();
INSERT INTO some_t VALUES (TRUE);
UPDATE some_t SET some_col = TRUE;

This is on a 64bit Arch Linux system with the postgresql-9.0.4-4
package and a linux-3.0.1 kernel.

Here is a backtrace of the crash, although I suppose it might not be
very useful without debugging symbols:

#0 0x0000000000450dca in slot_getattr ()
#1 0x000000000054787c in ?? ()
#2 0x000000000054de11 in ExecQual ()
#3 0x000000000052dbf2 in ?? ()
#4 0x000000000052de9a in ?? ()
#5 0x0000000000532035 in ExecARUpdateTriggers ()
#6 0x000000000055b341 in ExecModifyTable ()
#7 0x0000000000547518 in ExecProcNode ()
#8 0x0000000000544d5a in standard_ExecutorRun ()
#9 0x00000000005fbf01 in ?? ()
#10 0x00000000005fc114 in ?? ()
#11 0x00000000005fccc2 in PortalRun ()
#12 0x00000000005f8f3c in PostgresMain ()
#13 0x00000000005c9ee8 in ?? ()
#14 0x00000000005ca7dc in PostmasterMain ()
#15 0x000000000044f397 in main ()

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Hitoshi Harada 2011-08-21 16:44:37 BUG #6172: DROP EXTENSION error without CASCADE
Previous Message Tom Lane 2011-08-21 05:08:59 Re: BUG #6166: configure from source fails with 'This platform is not thread-safe.' but was actually /tmp perms