Re: BUG #19382: Server crash at __nss_database_lookup - Mailing list pgsql-bugs

From songjinzhou
Subject Re: BUG #19382: Server crash at __nss_database_lookup
Date
Msg-id tencent_04DAF0C76A6A76A8C7B48212F2362C818A09@qq.com
Whole thread Raw
In response to Re: BUG #19382: Server crash at __nss_database_lookup  (surya poondla <suryapoondla4@gmail.com>)
List pgsql-bugs
Hi Surya Poondla:

After applying the patch on the master branch, I debugged it and the type mismatch issue is indeed not as bad as before. I haven't looked at this patch much, but I'm a little worried about performance issues here.

I have one more question: Can we iterate through the code first to get the value of `need_conversion`, and then allocate memory and perform subsequent operations only if necessary? Of course, this is just my opinion. Thank you.

Regards,
songjinzhou



原始邮件

发件人:surya poondla <suryapoondla4@gmail.com>
发件时间:2026年3月19日 13:00
收件人:dllggyx <dllggyx@outlook.com>, pgsql-bugs <pgsql-bugs@lists.postgresql.org>
主题:Re: BUG #19382: Server crash at __nss_database_lookup

Hi All,

I was able to reproduce the crash on laster master (19), the above patch applies cleanly on postgres 19 and doesn't crash the server.

psql (19devel)
Type "help" for help.

postgres=# DROP FUNCTION IF EXISTS bar();
NOTICE:  function bar() does not exist, skipping
DROP FUNCTION
postgres=#   DROP TYPE IF EXISTS foo CASCADE;
NOTICE:  type "foo" does not exist, skipping
DROP TYPE
postgres=#   CREATE TYPE foo AS (a INT, b INT);
CREATE TYPE
postgres=#   CREATE FUNCTION bar() RETURNS RECORD AS $$
postgres$#   DECLARE
postgres$#       r foo := ROW(123, power(2, 30));
postgres$#   BEGIN
postgres$#       ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT;
postgres$#       RETURN r;
postgres$#   END;
postgres$#   $$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT bar();
       bar
------------------
 (123,1073741824)
(1 row)

postgres=# DROP FUNCTION IF EXISTS bar1();
NOTICE:  function bar1() does not exist, skipping
DROP FUNCTION
postgres=#   DROP TYPE IF EXISTS foo1 CASCADE;
NOTICE:  type "foo1" does not exist, skipping
DROP TYPE
postgres=#   CREATE TYPE foo1 AS (a INT, b INT);
CREATE TYPE
postgres=#   CREATE FUNCTION bar1(OUT r1 foo1) AS $$
postgres$#   BEGIN
postgres$#       r1 := ROW(1, 2);
postgres$#       ALTER TYPE foo1 ALTER ATTRIBUTE b TYPE TEXT;
postgres$#       RETURN;
postgres$#   END;
postgres$#   $$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# SELECT bar1();
 bar1
-------
 (1,2)
(1 row)

postgres=# DROP FUNCTION IF EXISTS bar2();
NOTICE:  function bar2() does not exist, skipping
DROP FUNCTION
postgres=#   DROP TYPE IF EXISTS foo2 CASCADE;
NOTICE:  type "foo2" does not exist, skipping
DROP TYPE
postgres=#   CREATE TYPE foo2 AS (a INT, b TEXT);
CREATE TYPE
postgres=#   CREATE FUNCTION bar2() RETURNS foo2 AS $$
postgres$#   DECLARE
postgres$#       r foo2 := ROW(1, 'hello');
postgres$#   BEGIN
postgres$#       ALTER TYPE foo2 ALTER ATTRIBUTE b TYPE INT;
postgres$#       RETURN r;
postgres$#   END;
postgres$#   $$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=#   SELECT bar2();
ERROR:  invalid input syntax for type integer: "hello"
CONTEXT:  PL/pgSQL function bar2() line 6 at RETURN
postgres=# DROP FUNCTION bar();
DROP FUNCTION
postgres=#   DROP FUNCTION bar1();
DROP FUNCTION
postgres=#   DROP FUNCTION bar2();
DROP FUNCTION
postgres=#   DROP TYPE IF EXISTS foo CASCADE;
DROP TYPE
postgres=#   DROP TYPE IF EXISTS foo1 CASCADE;
DROP TYPE
postgres=#   DROP TYPE IF EXISTS foo2 CASCADE;
DROP TYPE
postgres=# quit

Regards,
Surya Poondla


pgsql-bugs by date:

Previous
From: Andrei Lepikhov
Date:
Subject: Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables
Next
From: Alexander Korotkov
Date:
Subject: Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables