pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Joseph Barillari <jbarilla@princeton.edu>
To: pgsql-sql@postgresql.org
Subject: Syntax error in plpgsql crashes backend
Date: Sat, 04 May 2002 14:09:18 -0400
Message-ID: <m3wuujhjjl.fsf@washer.barillari.org> (raw)

I've found a pathological function input that crashes the backend.

Note the profusion of 'blah' text and the lack of an 'end;'
statement. Less text or an end statement stops this function from
provoking a crash.

CREATE OR REPLACE FUNCTION foo()
    RETURNS INTEGER
    AS '
DECLARE
	querystr TEXT;
BEGIN
querystr := ''
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 
             -- blah blah blah blah blah blah blah blah blah blah blah 


'';
return 1;
'
language 'plpgsql';

When I load this function and try to execute it, I get a syntax error:

cal=> \i test
CREATE
cal=> select foo();
NOTICE:  plpgsql: ERROR during compile of foo near line 60
ERROR:  parse error at or near ""

If I try it again, the backend crashes:

cal=> select foo();
NOTICE:  plpgsql: ERROR during compile of foo near line 60
ERROR:  parse error at or near ""
pqReadData() -- backend closed the channel unexpectedly.
	This probably means the backend terminated abnormally
	before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
!> 

I get the following output from the postmaster:

ERROR:  parse error at or near ""
NOTICE:  plpgsql: ERROR during compile of foo near line 60
DEBUG:  server process (pid 17990) was terminated by signal 11
DEBUG:  terminating any other active server processes
DEBUG:  all server processes terminated; reinitializing shared memory and semaphores
DEBUG:  database system was interrupted at 2002-05-04 14:03:46 EDT
DEBUG:  checkpoint record is at 0/41FFA70
DEBUG:  redo record is at 0/41FFA70; undo record is at 0/0; shutdown TRUE
DEBUG:  next transaction id: 41659; next oid: 147628
DEBUG:  database system was not properly shut down; automatic recovery in progress
DEBUG:  redo starts at 0/41FFAB0
DEBUG:  ReadRecord: record with zero length at 0/4205D4C
DEBUG:  redo done at 0/4205D28
FATAL 1:  The database system is starting up
DEBUG:  database system is ready


I anticipate that the correct response is `Don't do that then!' But I
assume someone would want to know about crashes like
this.

I'm using PostgreSQL 7.2, compiled with `gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85)'

--Joe

view thread (7+ messages)  latest in thread

Message-ID: <m3wuujhjjl.fsf@washer.barillari.org>
Permalink:  ../m3wuujhjjl.fsf@washer.barillari.org/
Also on:    postgresql.org/message-id/m3wuujhjjl.fsf@washer.barillari.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: jbarilla@princeton.edu
  Subject: Re: Syntax error in plpgsql crashes backend
  In-Reply-To: <m3wuujhjjl.fsf@washer.barillari.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox