Re: pl/python custom exceptions for SPI - Mailing list pgsql-hackers

From Tom Lane
Subject Re: pl/python custom exceptions for SPI
Date
Msg-id 26971.1298918338@sss.pgh.pa.us
Whole thread Raw
In response to Re: pl/python custom exceptions for SPI  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: pl/python custom exceptions for SPI
List pgsql-hackers
Peter Eisentraut <peter_e@gmx.net> writes:
> On mån, 2011-02-28 at 12:08 -0500, Tom Lane wrote:
>> I'm seeing a core dump as well as multiple inconsistencies in error
>> message spelling in the plpython regression tests on a Fedora 13 box
>> (python 2.6.4).  Several buildfarm critters don't look too happy either.

> Fixed.  (Well, some of it.  We'll see ...)

Core dump is still there.  It appears to be a python assertion failure.
I installed python's debuginfo and got this backtrace:

Program terminated with signal 6, Aborted.
#0  0x00000032a36328f5 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
Missing separate debuginfos, use: debuginfo-install keyutils-libs-1.2-6.fc12.x86_64 krb5-libs-1.7.1-17.fc13.x86_64
libcom_err-1.41.10-7.fc13.x86_64libselinux-2.0.94-2.fc13.x86_64 openssl-1.0.0c-1.fc13.x86_64 zlib-1.2.3-23.fc12.x86_64
 
(gdb) bt
#0  0x00000032a36328f5 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00000032a36340d5 in abort () at abort.c:92
#2  0x00000032a362b8b5 in __assert_fail (assertion=0x32a5b46391 "gc->gc.gc_refs != 0", file=<value optimized out>,
line=277,function=<value optimized out>)   at assert.c:81
 
#3  0x00000032a5b0853e in visit_decref (op=<module at remote 0x7f11c3666d38>, data=<value optimized out>) at
Modules/gcmodule.c:277
#4  0x00000032a5a7cbd9 in dict_traverse (op=   {'info': <built-in function info>, 'notice': <built-in function notice>,
'Fatal':<type at remote 0x1bba7e0>, 'log': <built-in function log>, 'prepare': <built-in function prepare>,
'spiexceptions':<module at remote 0x7f11c3666d38>, 'SPIError': <type at remote 0x1bbacc0>, 'Error': <type at remote
0x1bba300>,'execute': <built-in function execute>, '__package__': None, 'quote_ident': <built-in function quote_ident>,
'warning':<built-in function warning>, 'subtransaction': <built-in function subtransaction>, 'quote_literal': <built-in
functionquote_literal>, 'quote_nullable': <built-in function quote_nullable>, 'error': <built-in function error>,
'debug':<built-in function debug>, '__name__': 'plpy', 'fatal': <built-in function fatal>, '__doc__': None},
visit=0x32a5b084c0<visit_decref>, arg=0x0)   at Objects/dictobject.c:2003
 
#5  0x00000032a5b08c9f in subtract_refs (generation=1) at Modules/gcmodule.c:296
#6  collect (generation=1) at Modules/gcmodule.c:817
#7  0x00000032a5b096fa in collect_generations (basicsize=<value optimized out>) at Modules/gcmodule.c:924
#8  _PyObject_GC_Malloc (basicsize=<value optimized out>) at Modules/gcmodule.c:1363
#9  0x00000032a5b0972e in _PyObject_GC_NewVar (tp=0x32a5d899a0, nitems=1) at Modules/gcmodule.c:1383
#10 0x00000032a5a9703f in PyTuple_New (size=1) at Objects/tupleobject.c:69
#11 0x00000032a5af3697 in r_object (p=0x7fffe1f5f330) at Python/marshal.c:788
#12 0x00000032a5af389c in r_object (p=0x7fffe1f5f330) at Python/marshal.c:927
#13 0x00000032a5af36dd in r_object (p=0x7fffe1f5f330) at Python/marshal.c:794
#14 0x00000032a5af389c in r_object (p=0x7fffe1f5f330) at Python/marshal.c:927
#15 0x00000032a5af36dd in r_object (p=0x7fffe1f5f330) at Python/marshal.c:794
#16 0x00000032a5af389c in r_object (p=0x7fffe1f5f330) at Python/marshal.c:927
#17 0x00000032a5af3fd8 in PyMarshal_ReadObjectFromString (str=<value optimized out>, len=<value optimized out>) at
Python/marshal.c:1107
#18 0x00000032a5af5952 in PyMarshal_ReadLastObjectFromFile (fp=0x1c66e50) at Python/marshal.c:1066
#19 0x00000032a5aedb39 in read_compiled_module (cpathname=0x7fffe1f63540 "/usr/lib64/python2.6/string.pyc", fp=<value
optimizedout>) at Python/import.c:767
 
#20 0x00000032a5aef69d in load_source_module (name=0x7fffe1f656a0 "string", pathname=0x7fffe1f645c0
"/usr/lib64/python2.6/string.py",fp=0x1c29b30)   at Python/import.c:991
 
#21 0x00000032a5af0cb5 in import_submodule (mod=None, subname=0x7fffe1f656a0 "string", fullname=0x7fffe1f656a0
"string")at Python/import.c:2589
 
#22 0x00000032a5af0f34 in load_next (mod=None, altmod=None, p_name=<value optimized out>, buf=0x7fffe1f656a0 "string",
p_buflen=0x7fffe1f65698)  at Python/import.c:2409
 
#23 0x00000032a5af1582 in import_module_level (name=0x0, globals=<value optimized out>, locals=<value optimized out>,
fromlist=None,level=<value optimized out>)   at Python/import.c:2131
 
#24 0x00000032a5af22c4 in PyImport_ImportModuleLevel (name=0x7f11c40c2084 "string", globals=   {'plpy': <module at
remote0x7f11c3666ad0>, 'GD': {}, 'args': [], '__builtins__': <module at remote 0x7f11c4158830>, '__name__': '__main__',
'SD':{}, '__doc__': None, '__plpython_procedure_import_succeed_41194': <function at remote 0x7f11c3652aa0>,
'__package__':None}, locals=None, fromlist=None,    level=<value optimized out>) at Python/import.c:2182
 
#25 0x00000032a5ad762f in builtin___import__ (self=<value optimized out>, args=<value optimized out>, kwds=<value
optimizedout>) at Python/bltinmodule.c:48
 
#26 0x00000032a5a43db3 in PyObject_Call (func=<built-in function __import__>, arg=<value optimized out>, kw=<value
optimizedout>) at Objects/abstract.c:2492
 
#27 0x00000032a5ad7ba3 in PyEval_CallObjectWithKeywords (func=<built-in function __import__>, arg=   ('string',
{'plpy':<module at remote 0x7f11c3666ad0>, 'GD': {}, 'args': [], '__builtins__': <module at remote 0x7f11c4158830>,
'__name__':'__main__', 'SD': {}, '__doc__': None, '__plpython_procedure_import_succeed_41194': <function at remote
0x7f11c3652aa0>,'__package__': None}, None, None), kw=<value optimized out>)   at Python/ceval.c:3633
 
#28 0x00000032a5ada844 in PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value optimized out>) at
Python/ceval.c:2192
#29 0x00000032a5ade312 in fast_function (f=<value optimized out>, throwflag=<value optimized out>) at
Python/ceval.c:3850
#30 call_function (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:3785
#31 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:2445
#32 0x00000032a5adf4e9 in PyEval_EvalCodeEx (co=0x7f11c36526c0, globals=<value optimized out>, locals=<value optimized
out>,args=<value optimized out>,    argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at
Python/ceval.c:3026
#33 0x00000032a5adf5b2 in PyEval_EvalCode (co=<value optimized out>, globals=<value optimized out>, locals=<value
optimizedout>) at Python/ceval.c:526
 
#34 0x00007f11c418cab2 in PLy_procedure_call (proc=0x1c2c9d8, kargs=<value optimized out>, vargs=<value optimized out>)
atplpython.c:1317
 
#35 0x00007f11c418cdfe in PLy_function_handler (fcinfo=0x1c3fd30, proc=0x1c2c9d8) at plpython.c:1091
#36 0x00007f11c418fb77 in plpython_call_handler (fcinfo=0x1c3fd30) at plpython.c:569
#37 0x0000000000588100 in ExecMakeFunctionResult (fcache=0x1c3fcc0, econtext=0x1c3fa98, isNull=0x1c40670
"\177~\177\177\177\177\177\177\270\004\253\001",   isDone=<value optimized out>) at execQual.c:1826
 
#38 0x00000000005831b6 in ExecTargetList (projInfo=<value optimized out>, isDone=0x7fffe1f6703c) at execQual.c:5123
#39 ExecProject (projInfo=<value optimized out>, isDone=0x7fffe1f6703c) at execQual.c:5338
#40 0x000000000059b65b in ExecResult (node=0x1c3f980) at nodeResult.c:155
#41 0x0000000000582738 in ExecProcNode (node=0x1c3f980) at execProcnode.c:367
#42 0x0000000000581496 in ExecutePlan (queryDesc=0x19e4df8, direction=<value optimized out>, count=0) at
execMain.c:1385
#43 standard_ExecutorRun (queryDesc=0x19e4df8, direction=<value optimized out>, count=0) at execMain.c:311
#44 0x000000000065d5d7 in PortalRunSelect (portal=0x19e2de8, forward=<value optimized out>, count=0, dest=0x1c3de28) at
pquery.c:950
#45 0x000000000065e9f0 in PortalRun (portal=0x19e2de8, count=9223372036854775807, isTopLevel=1 '\001', dest=0x1c3de28,
altdest=0x1c3de28,completionTag=   0x7fffe1f672a0 "") at pquery.c:794
 
#46 0x000000000065ae39 in exec_simple_query (query_string=0x1a70ac8 "SELECT import_succeed();") at postgres.c:1059
#47 0x000000000065bdf0 in PostgresMain (argc=<value optimized out>, argv=<value optimized out>, username=<value
optimizedout>) at postgres.c:3943
 
#48 0x0000000000615081 in BackendRun () at postmaster.c:3590
#49 BackendStartup () at postmaster.c:3275
#50 ServerLoop () at postmaster.c:1449
#51 0x000000000061795f in PostmasterMain (argc=<value optimized out>, argv=<value optimized out>) at postmaster.c:1110
#52 0x00000000005b2e70 in main (argc=3, argv=0x19c3910) at main.c:199


Don't know python enough to do anything useful with this, but the
reference to "gc_refs" sure makes it look like something is dropping the
ball on when to do INCREF/DECREF.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: Why our counters need to be time-based WAS: WIP: cross column correlation ...
Next
From: Simon Riggs
Date:
Subject: Re: Sync Rep v17