plperl crashing backend

From: Michael Blakeley <mike(at)blakeley(dot)com>
To: pgsql-general(at)postgreSQL(dot)org
Subject: plperl crashing backend
Date: 2000-09-03 21:16:17
Message-ID: p05001106b5d86ddbc42d@blakeley.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I'm running postgresql 7.0.1 on Solaris 2.6, with the latest patch
cluster. I've compiled pg and Perl 5.6.0 with gcc 2.9.5-2.

I want to do some work with plperl fuctions, for text parsing. So I
run psql and do:

db=# CREATE FUNCTION testfunction(VARCHAR) RETURNS VARCHAR AS
db-# 'return "foo"' LANGUAGE 'plperl';
CREATE
db=# SELECT testfunction('foo');

...after a pause, I see:

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.
!#

truss-ing the backend process while this is happening doesn't show
much. Here it is, though:
9973/1: recv(6, 0x0017D8F0, 8192, 0) (sleeping...)
9973/1: recv(6, " Q S E L E C T t e s t".., 8192, 0) = 27
9973/1: time() = 968015516
9973/1: open("/usr/local/pgsql/data/base/db/pg_aggregate", O_RDWR)
= 35
9973/1: lseek(35, 0, SEEK_END) = 8192
9973/1: lseek(13, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: open("/usr/local/pgsql/data/base/db/pg_aggregate_name_type
_index", O_RDWR) = 36
9973/1: lseek(36, 0, SEEK_END) = 16384
9973/1: lseek(36, 0, SEEK_SET) = 0
9973/1: read(36, "\0\b1FF01FF0 \0\005 1 b".., 8192) = 8192
9973/1: lseek(36, 8192, SEEK_SET) = 8192
9973/1: read(36, "\0BC17801FF0 \0 ?8080 0".., 8192) = 8192
9973/1: lseek(35, 0, SEEK_END) = 8192
9973/1: lseek(35, 0, SEEK_SET) = 0
9973/1: read(35, "\0BC\r p \0 \0 ? 80 m".., 8192) = 8192
9973/1: lseek(13, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: open("/usr/local/pgsql/data/base/db/pg_proc_proname_narg_t
ype_index", O_RDWR) = 37
9973/1: lseek(37, 0, SEEK_END) = 229376
9973/1: lseek(37, 0, SEEK_SET) = 0
9973/1: read(37, "\0\b1FF01FF0 \0\005 1 b".., 8192) = 8192
9973/1: lseek(37, 24576, SEEK_SET) = 24576
9973/1: read(37, "\0 p14901FF0 \0 ?\080 p".., 8192) = 8192
9973/1: lseek(37, 139264, SEEK_SET) = 139264
9973/1: read(37, "\0C4\v `1FF0 \0 ?\080 p".., 8192) = 8192
9973/1: lseek(33, 204800, SEEK_SET) = 204800
9973/1: read(33, "\0A80198 \0 \0 >8080BD".., 8192) = 8192
9973/1: lseek(25, 8192, SEEK_SET) = 8192
9973/1: read(25, "01 01 ` \0 \0 ? 80 m".., 8192) = 8192
9973/1: lseek(34, 49152, SEEK_SET) = 49152
9973/1: read(34, "039011D01FF0 \0 ?C08010".., 8192) = 8192
9973/1: open("/usr/local/pgsql/data/base/db/pg_language", O_RDWR)
= 38
9973/1: lseek(38, 0, SEEK_END) = 8192
9973/1: lseek(13, 0, SEEK_END) = 8192
9973/1: lseek(15, 0, SEEK_END) = 8192
9973/1: lseek(16, 0, SEEK_END) = 16384
9973/1: open("/usr/local/pgsql/data/base/db/pg_language_oid_index"
, O_RDWR) = 39
9973/1: lseek(39, 0, SEEK_END) = 16384
9973/1: lseek(39, 0, SEEK_SET) = 0
9973/1: read(39, "\0\b1FF01FF0 \0\005 1 b".., 8192) = 8192
9973/1: lseek(39, 8192, SEEK_SET) = 8192
9973/1: read(39, "\0181FB01FF0 \0 ?C08010".., 8192) = 8192
9973/1: lseek(38, 0, SEEK_SET) = 0
9973/1: read(38, "\0181EA8 \0 \0 ? `80 O".., 8192) = 8192
9973/1: stat("/usr/local/pgsql/lib/plperl.so", 0xEFFFDD98) = 0
9973/1: open("/usr/local/pgsql/lib/plperl.so", O_RDONLY) = 40
9973/1: fstat(40, 0xEFFFDB7C) = 0
9973/1: mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 40, 0)
= 0xEF590000
9973/1: mmap(0x00000000, 90112, PROT_READ|PROT_EXEC,
MAP_PRIVATE, 40, 0)
= 0xED3E0000
9973/1: mmap(0xED3F2000, 9060,
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVA
TE|MAP_FIXED, 40, 8192) = 0xED3F2000
9973/1: munmap(0xED3E4000, 57344) = 0
9973/1: memcntl(0xED3E0000, 6604, MC_ADVISE, 0x0003, 0, 0) = 0
9973/1: close(40) = 0
9973/1:
open("/usr/local/lib/perl5/5.6.0/sun4-solaris/auto/Opcode/Opcode
.so", O_RDONLY) = 40
9973/1: fstat(40, 0xEFFFDAAC) = 0
9973/1: mmap(0xEF590000, 8192, PROT_READ|PROT_EXEC,
MAP_PRIVATE|MAP_FIXE
D, 40, 0) = 0xEF590000
9973/1: mmap(0x00000000, 90112, PROT_READ|PROT_EXEC,
MAP_PRIVATE, 40, 0)
= 0xED3C0000
9973/1: mmap(0xED3D4000, 4216,
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVA
TE|MAP_FIXED, 40, 16384) = 0xED3D4000
9973/1: munmap(0xED3C6000, 57344) = 0
9973/1: memcntl(0xED3C0000, 6240, MC_ADVISE, 0x0003, 0, 0) = 0
9973/1: close(40) = 0
9973/1: open("/usr/lib/libperl.so", O_RDONLY) = 40
9973/1: fstat(40, 0xEFFFDAAC) = 0
9973/1: mmap(0xEF590000, 8192, PROT_READ|PROT_EXEC,
MAP_PRIVATE|MAP_FIXE
D, 40, 0) = 0xEF590000
9973/1: mmap(0x00000000, 1171456, PROT_READ|PROT_EXEC, MAP_PRIVATE, 40,
0) = 0xED280000
9973/1: mmap(0xED38E000, 56028,
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIV
ATE|MAP_FIXED, 40, 1040384) = 0xED38E000
9973/1: open("/dev/zero", O_RDONLY) = 41
9973/1: mmap(0xED39C000, 1536,
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVA
TE|MAP_FIXED, 41, 0) = 0xED39C000
9973/1: munmap(0xED380000, 57344) = 0
9973/1: memcntl(0xED280000, 136444, MC_ADVISE, 0x0003, 0, 0) = 0
9973/1: close(40) = 0
9973/1: mprotect(0xED3E0000, 15895, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
9973/1: mprotect(0xED3E0000, 15895, PROT_READ|PROT_EXEC) = 0
9973/1: mprotect(0xED3C0000, 19335, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
9973/1: mprotect(0xED3C0000, 19335, PROT_READ|PROT_EXEC) = 0
9973/1: mprotect(0xED280000, 1042504, PROT_READ|PROT_WRITE|PROT_EXEC) =
0
9973/1: mprotect(0xED280000, 1042504, PROT_READ|PROT_EXEC) = 0
9973/1: close(41) = 0
9973/1: munmap(0xEF590000, 8192) = 0
9973/1: brk(0x0039EBB8) = 0
9973/1: brk(0x003A0BB8) = 0
9973/1: getuid() = 101 [101]
9973/1: getuid() = 101 [101]
9973/1: getgid() = 100 [100]
9973/1: getgid() = 100 [100]
9973/1: time() = 968015516
9973/1: getcontext(0xEFFFDB50)
9973/1: Incurred fault #5, FLTACCESS %pc = 0xED2AB9E8
9973/1: siginfo: SIGBUS BUS_ADRALN addr=0x001F5045
9973/1: Received signal #10, SIGBUS [default]
9973/1: siginfo: SIGBUS BUS_ADRALN addr=0x001F5045
9973/1: *** process killed ***

The postgres log is also uninformative:

>Server process (pid 8307) exited with status 138 at Sun Sep 3 14:04:38 2000
>Terminating any active server processes...
>The Data Base System is in recovery mode
>NOTICE: Message from PostgreSQL backend:
> The Postmaster has informed me that some other backend died
>abnormally and possibly corrupted shared memory.
> I have rolled back the current transaction and am going to
>terminate your database system connection and exit.
> Please reconnect to the database system and repeat your query.
>Server processes were terminated at Sun Sep 3 14:04:38 2000
>Reinitializing shared memory and semaphores
>DEBUG: Data Base System is starting up at Sun Sep 3 14:04:38 2000
>DEBUG: Data Base System was interrupted being in production at Sun
>Sep 3 13:54:36 2000
>DEBUG: Data Base System is in production state at Sun Sep 3 14:04:38 2000

Any ideas?

thanks,
-- Mike

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2000-09-03 21:40:39 Re: Indexes not working (bug in 7.0.2?)
Previous Message Alfred Perlstein 2000-09-03 21:08:27 Re: Indexes not working (bug in 7.0.2?)