I have a program that does a:
DECLARE getsitescursor CURSOR FOR select...
I ^C'd it and it didn't properly shut down the channel to
postgresql and I got this crash:
#0 0x4828ffc8 in kill () from /usr/lib/libc.so.4
#1 0x482cbbf2 in abort () from /usr/lib/libc.so.4
#2 0x814442f in ExcAbort () at excabort.c:27
#3 0x81443ae in ExcUnCaught (excP=0x81a6070, detail=0, data=0x0, message=0x819a860 "!(AllocSetContains(set,
pointer))")at exc.c:170
#4 0x81443f5 in ExcRaise (excP=0x81a6070, detail=0, data=0x0, message=0x819a860 "!(AllocSetContains(set,
pointer))")at exc.c:187
#5 0x8143ae4 in ExceptionalCondition ( conditionName=0x819a860 "!(AllocSetContains(set, pointer))",
exceptionP=0x81a6070,detail=0x0, fileName=0x819a720 "aset.c", lineNumber=392) at assert.c:73
#6 0x8147897 in AllocSetFree (set=0x8465134, pointer=0x84e0018 "<hashtable 1>") at aset.c:392
#7 0x8148394 in PortalVariableMemoryFree (this=0x846512c, pointer=0x84e0018 "<hashtable 1>") at portalmem.c:204
#8 0x8147e99 in MemoryContextFree (context=0x846512c, pointer=0x84e0018 "<hashtable 1>") at mcxt.c:245
#9 0x81490e5 in PortalDrop (portalP=0x8467944) at portalmem.c:802
#10 0x8148715 in CollectNamedPortals (portalP=0x0, destroy=1) at portalmem.c:442
#11 0x814880f in AtEOXact_portals () at portalmem.c:472
#12 0x80870ad in AbortTransaction () at xact.c:1053
#13 0x80872ec in AbortOutOfAnyTransaction () at xact.c:1552
#14 0x810b3d0 in PostgresMain (argc=9, argv=0xbfbff0e0, real_argc=10, real_argv=0xbfbffb40) at postgres.c:1643
#15 0x80f0736 in DoBackend (port=0x8464000) at postmaster.c:2009
#16 0x80f02c9 in BackendStartup (port=0x8464000) at postmaster.c:1776
#17 0x80ef4ed in ServerLoop () at postmaster.c:1037
#18 0x80eeed2 in PostmasterMain (argc=10, argv=0xbfbffb40) at postmaster.c:725
#19 0x80bf3df in main (argc=10, argv=0xbfbffb40) at main.c:93
#20 0x8063495 in _start ()
things go to pot here:
387 {
388 AllocChunk chunk;
389
390 /* AssertArg(AllocSetIsValid(set)); */
391 /* AssertArg(AllocPointerIsValid(pointer)); */
392 AssertArg(AllocSetContains(set, pointer));
393
394 chunk = AllocPointerGetChunk(pointer);
395
396 #ifdef CLOBBER_FREED_MEMORY
(gdb) print *set
$2 = {blocks = 0x0, freelist = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
(gdb) print pointer
$3 = 0x84e0018 "<hashtable 1>"
These sources are the current CVS sources with the exception of
some removed files by Marc.
Is there any more information I can provide?
--
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."