Mac OS X, PostgreSQL, PL/Tcl - Mailing list pgsql-hackers

From Scott Goodwin
Subject Mac OS X, PostgreSQL, PL/Tcl
Date
Msg-id 41D4BE4E-6427-11D8-B0AC-000A95A0910A@scottg.net
Whole thread Raw
Responses Re: Mac OS X, PostgreSQL, PL/Tcl  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hoping someone can help me figure out why I can't get PL/Tcl to load  
without crashing the backend on Mac OS 10.3.2.

I compile Tcl, PostgreSQL, create the database and then run the  
following:

create function plpgsql_call_handler() RETURNS LANGUAGE_HANDLER
as 'plpgsql.so' language 'c';

create trusted procedural language 'plpgsql'  HANDLER plpgsql_call_handler  LANCOMPILER 'PL/pgSQL';

create function pltcl_call_handler() RETURNS LANGUAGE_HANDLER
as 'pltcl.so' language 'c';

create trusted procedural language 'pltcl'   HANDLER pltcl_call_handler   LANCOMPILER 'PL/Tcl';

The PL/pgSQL part loads fine. The PL/Tcl part crashes the server, and  
psql reports this:

psql:/Users/scott/pgtest/add_languages.sql:12: server closed the  
connection unexpectedly        This probably means the server terminated abnormally        before or while processing
therequest.
 
psql:/Users/scott/pgtest/add_languages.sql:12: connection to server was  
lost

I have tried the exact same procedure on Linux without any problems  
using the exact same scripts, setup etc. I've tried both PG 7.4.1 and a  
CVS copy from 11 Feb. I've used gcc 3.3, 3.1 and 2.85. I've tried  
loading PL/Tcl without loading PL/pgSQL at all, same problem. I tried  
Tcl 8.4.3, 8.4.4 and 8.4.5. pgtclsh runs fine.

I used ktrace to attach to the PG process and it's generating a  
SIGSEGV. I get several "file name too long" errors before the SEGV.  
Problem is probably not with PG, but could be with Tcl and/or Mac OS X  
loadable libs. Here's the significant portion of it (you can find the  
whole output trace at http://scottg.net/pgktrace.txt):

... stuff prior ...
 27296 postgres 0.000021 NAMI  "/usr/lib/libicucore.A.dylib" 27296 postgres 0.000019 RET   open 114/0x72 27296 postgres
0.000009CALL  fstat(0x72,0xbfffdf50) 27296 postgres 0.000009 RET   fstat 0 27296 postgres 0.000047 CALL   
 
load_shared_file(0x9019060c,0x605000,0x13b680,0xbfffdd60,0x4,0xbfffdcf0, 
0xbfffdd64) 27296 postgres 0.000053 NAMI  "/usr/lib/libicucore.A.dylib" 27296 postgres 0.000135 RET   load_shared_file
027296 postgres 0.000034 CALL  close(0x72) 27296 postgres 0.000015 RET   close 0 27296 postgres 0.000113 CALL
stat(0x800200,0xbfffde20)27296 postgres 0.000016 NAMI  "



                                                                                                                    
 
/libSystem.B.dylib" 27296 postgres 0.000023 RET   stat -1 errno 2 No such file or directory 27296 postgres 0.000021
CALL stat(0x800200,0xbfffde20) 27296 postgres 0.000009 NAMI  "




 
 
/libSystem.B.dylib" 27296 postgres 0.000017 RET   stat -1 errno 2 No such file or directory 27296 postgres 0.004552
CALL stat(0x182ea00,0xbfffd430) 27296 postgres 0.000044 RET   stat -1 errno 63 File name too long 27296 postgres
0.000019CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63 File name too long 27296
postgres0.000012 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63 File name too long
27296postgres 0.000013 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63 File name too
long27296 postgres 0.000013 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63 File name
toolong 27296 postgres 0.000013 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63 File
nametoo long 27296 postgres 0.000013 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000008 RET   stat -1 errno 63
Filename too long 27296 postgres 0.000013 CALL  stat(0x182ea00,0xbfffd430) 27296 postgres 0.000009 RET   stat -1 errno
63File name too long 27296 postgres 0.000013 CALL  stat(0x90104e34,0xbfffd3b0) 27296 postgres 0.000118 NAMI  "/" 27296
postgres0.000019 RET   stat 0 27296 postgres 0.000012 CALL  lstat(0x182f600,0xbfffd3b0) 27296 postgres 0.000007 NAMI
"."27296 postgres 0.000016 RET   lstat 0 27296 postgres 0.000009 CALL  stat(0x182f600,0xbfffd1a0) 27296 postgres
0.000006NAMI  ".." 27296 postgres 0.000018 RET   stat 0 27296 postgres 0.000009 CALL  open(0x182f600,0x4,0xfefefeff)
 

... more stuff ...

27296 postgres 0.000007 NAMI  "../../../../../.." 27296 postgres 0.000021 RET   stat 0 27296 postgres 0.000008 CALL
open(0x182f600,0x4,0)27296 postgres 0.000008 NAMI  "../../../../../.." 27296 postgres 0.000016 RET   open 114/0x72
27296postgres 0.000009 CALL  fstat(0x72,0xbfffd1a0) 27296 postgres 0.000007 RET   fstat 0 27296 postgres 0.000007 CALL
fcntl(0x72,0x2,0x1)27296 postgres 0.000007 RET   fcntl 0 27296 postgres 0.000008 CALL  fstatfs(0x72,0xbfffd200) 27296
postgres0.000007 RET   fstatfs 0 27296 postgres 0.000009 CALL  fstat(0x72,0xbfffd3b0) 27296 postgres 0.000007 RET
fstat0 27296 postgres 0.000008 CALL   
 
getdirentries(0x72,0x182fa00,0x1000,0x501b74) 27296 postgres 0.000065 RET   getdirentries 640/0x280 27296 postgres
0.000015CALL  lseek(0x72,0,0,0) 27296 postgres 0.000007 RET   lseek 0 27296 postgres 0.000009 CALL  close(0x72) 27296
postgres0.000009 RET   close 0 27296 postgres 0.000007 CALL  lstat(0x182f600,0xbfffd3b0) 27296 postgres 0.000007 NAMI
"../../../../../../"27296 postgres 0.000019 RET   lstat 0 27296 postgres 0.000024 CALL  stat(0xbfffd4f0,0xbfffd900)
27296postgres 0.000009 RET   stat -1 errno 63 File name too long 27296 postgres 0.140906 PSIG  SIGSEGV SIG_DFL 26999
postgres0.004582 CSW  resume kernel 26999 postgres 0.000025 RET   select -1 errno 4 Interrupted system call 26999
postgres0.000010 PSIG  SIGCHLD caught handler=0xe59ac mask=0x0  
 
code=0x0 26999 postgres 0.000302 CALL  sigprocmask(0x3,0x23fc74,0) 26999 postgres 0.000036 RET   sigprocmask 0 26999
postgres0.000037 CALL  wait4(0xffffffff,0xbfffe670,0x1,0) 26999 postgres 0.000086 RET   wait4 27296/0x6aa0 26999
postgres0.000258 CALL  write(0x2,0xbfffdd10,0x3d) 26999 postgres 0.000031 GIO   fd 2 wrote 61 bytes       "LOG:  server
process(PID 27296) was terminated by signal 11       " 26999 postgres 0.000009 RET   write 61/0x3d 26999 postgres
0.000020CALL  write(0x2,0xbfffdd10,0x34) 26999 postgres 0.000013 GIO   fd 2 wrote 52 bytes       "LOG:  terminating any
otheractive server processes       " 26999 postgres 0.000008 RET   write 52/0x34 26999 postgres 0.000032 CALL
kill(0x6a35,0x3)26999 postgres 0.000020 RET   kill 0 26999 postgres 0.000011 CALL  sendto(0x6e,0xbfffe5a0,0x18,0,0,0)
 


thanks,

/s.



pgsql-hackers by date:

Previous
From: "Nicolai Tufar"
Date:
Subject: Re: 7.4.1 release status - Turkish Locale
Next
From: Tom Lane
Date:
Subject: Re: 7.4.1 release status - Turkish Locale