Server crash when selecting from pg_cursors

PetSerAl <petseral@gmail.com>

From: PetSerAl <petseral@gmail.com>
To: pgsql-bugs@lists.postgresql.org
Date: 2024-10-06T16:15:10Z
Lists: pgsql-bugs
postgres=# SELECT version();
                                 version
-------------------------------------------------------------------------
 PostgreSQL 17.0 on x86_64-windows, compiled by msvc-19.41.34120, 64-bit
(1 row)


postgres=# CREATE TABLE t (a integer, b integer);
CREATE TABLE
postgres=# CREATE FUNCTION f() RETURNS integer
postgres-# STABLE STRICT LANGUAGE plpgsql
postgres-# AS $$
postgres$# BEGIN
postgres$#      PERFORM FROM pg_cursors;
postgres$#      RETURN null;
postgres$# END
postgres$# $$;
CREATE FUNCTION
postgres=# DO $$
postgres$# DECLARE
postgres$#      a integer;
postgres$# BEGIN
postgres$#      FOR a IN SELECT t.a FROM t WHERE t.b = f() LOOP
postgres$#      END LOOP;
postgres$# END
postgres$# $$;
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
The connection to the server was lost. Attempting reset: Failed.
!?>

Server log:
[21932] LOG:  server process (PID 22552) was terminated by exception 0xC0000005
[21932] DETAIL:  Failed process was running: DO $$
        DECLARE
                a integer;
        BEGIN
                FOR a IN SELECT t.a FROM t WHERE t.b = f() LOOP
                END LOOP;
        END
        $$;
[21932] HINT:  See C include file "ntstatus.h" for a description of
the hexadecimal value.
[21932] LOG:  terminating any other active server processes
[21932] LOG:  all server processes terminated; reinitializing



Commits

  1. Ignore not-yet-defined Portals in pg_cursors view.