BUG #5069: Segfault - Mailing list pgsql-bugs

From Kenaniah Cerny
Subject BUG #5069: Segfault
Date
Msg-id 200909200734.n8K7YeFs088194@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #5069: Segfault  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      5069
Logged by:          Kenaniah Cerny
Email address:      kenaniah@gmail.com
PostgreSQL version: 8.4.1
Operating system:   Centos5.2
Description:        Segfault
Details:

Segfault party!!!!

output of uname -a:
Linux <myhostname> 2.6.18-92.1.10.el5 #1 SMP Tue Aug 5 07:41:53 EDT 2008
i686 athlon i386 GNU/Linux


Fortunately due to an incremental update, I've narrowed the cause of the bug
down to the following function run as a trigger:



CREATE OR REPLACE FUNCTION "public"."trigger_update_words" () RETURNS
trigger AS
$body$
BEGIN
    INSERT INTO words SELECT word FROM ts_stat('SELECT to_tsvector(''simple'',
name) FROM '||TG_TABLE_NAME||' WHERE title_type_id IN (1, 2, 4, 6) AND id =
'||NEW.id)
    EXCEPT SELECT word FROM words;
    RETURN NEW;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

CREATE TRIGGER "anime_titles_tr_update_words" AFTER INSERT OR UPDATE
ON "public"."anime_titles" FOR EACH ROW
EXECUTE PROCEDURE "public"."trigger_update_words"();




My anime titles relation is defined below:




CREATE TABLE "public"."anime_titles" (
  "id" SERIAL,
  "name" TEXT NOT NULL,
  "anime_id" INTEGER NOT NULL,
  "title_type_id" INTEGER NOT NULL,
  "is_main" BOOLEAN DEFAULT false NOT NULL,
  "metaphone" TEXT,
  "metaphone_alt" TEXT,
  CONSTRAINT "anime_titles_pkey" PRIMARY KEY("id"),
  CONSTRAINT "anime_titles_fk_anime_id" FOREIGN KEY ("anime_id")
    REFERENCES "public"."anime"("id")
    ON DELETE CASCADE
    ON UPDATE NO ACTION
    NOT DEFERRABLE,
  CONSTRAINT "anime_titles_fk_title_type_id" FOREIGN KEY ("title_type_id")
    REFERENCES "public"."anime_title_types"("id")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
    NOT DEFERRABLE
) WITH OIDS;

CREATE INDEX "anime_titles_idx_lower_name" ON "public"."anime_titles"
  USING btree ((lower(name)))
  TABLESPACE "second_disk";

CREATE INDEX "anime_titles_idx_metaphone" ON "public"."anime_titles"
  USING btree ("metaphone", "metaphone_alt");

CREATE INDEX "anime_titles_idx_name_simple_text" ON "public"."anime_titles"
  USING gin ((to_tsvector('simple'::regconfig, name)));

CREATE INDEX "anime_titles_idx_title_type_id" ON "public"."anime_titles"
  USING btree ("title_type_id");

CREATE TRIGGER "anime_titles_tr_audit" AFTER INSERT OR UPDATE
ON "public"."anime_titles" FOR EACH ROW
EXECUTE PROCEDURE "public"."anime_titles_audit"();

CREATE TRIGGER "anime_titles_tr_update_metaphone" AFTER INSERT OR UPDATE
ON "public"."anime_titles" FOR EACH ROW
EXECUTE PROCEDURE "public"."update_metaphone_fields"();

CREATE TRIGGER "anime_titles_tr_update_words" AFTER INSERT OR UPDATE
ON "public"."anime_titles" FOR EACH ROW
EXECUTE PROCEDURE "public"."trigger_update_words"();




And last but not least, the words table:




CREATE TABLE "public"."words" (
  "word" TEXT NOT NULL,
  CONSTRAINT "words_pkey" PRIMARY KEY("word")
) WITH OIDS;




My database locale/collation/encoding is all en_US.UTF-8

I have concluded that the other two triggers that run on my anime_titles
table aren't related to the issue at hand as the issue still occurs with
those triggers disabled.

The segfault occurred when attempting to insert into anime_title a name of
'.hack//SIGN'

There are currently 5569 entries in the words table and 6928 entries in the
anime_titles table.

pgsql-bugs by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: BUG #5068: LIKE
Next
From: Tom Lane
Date:
Subject: Re: BUG #5069: Segfault