7.0.2 dies when connection dropped mid-transaction - Mailing list pgsql-hackers

From Alfred Perlstein
Subject 7.0.2 dies when connection dropped mid-transaction
Date
Msg-id 20001109170429.C11449@fw.wintelcom.net
Whole thread Raw
Responses Re: 7.0.2 dies when connection dropped mid-transaction
Re: 7.0.2 dies when connection dropped mid-transaction
List pgsql-hackers
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."


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Recursive use of syscaches (was: relation ### modified while in use)
Next
From: Tom Lane
Date:
Subject: Re: 7.0.2 dies when connection dropped mid-transaction