On Apr 14, 2010, at 3:30 PM, Tom Lane wrote:

> Rusty Conover <rcono...@infogears.com> writes:
>> On Apr 14, 2010, at 2:31 PM, Tom Lane wrote:
>>> There is another slightly odd thing here, which is that the stack trace
>>> Rusty provided clearly shows the crash occurring during processing of a
>>> local relcache invalidation message for the truncated relation.
> 
>> The test case program was the smallest thing I could write to reproduce the 
>> problem consistently on my machine, but I couldn't reproduce it consistently 
>> on other machines and architectures.  I'm glad Heikki was able to also see 
>> the crash on his hardware.  I can take Heikki's patch back out and get a new 
>> stack trace from the test program if that would be useful to you.
> 
> Yeah, I'm curious to know if the stack trace is the same for crashes in
> the watered-down test case.  AFAICS, relcache invals triggered by the
> TRUNCATE itself ought to be serviced before we get out of the TRUNCATE;
> and after that, the xact is holding exclusive lock on the table so
> there's no way that we should get a remote inval on the specific relation
> (not to mention that the trace is clearly about a local inval not an
> incoming remote inval).  So I don't understand why the trace says that
> it's happening during a subsequent INSERT.
> 
> Mind you, Heikki's patch looks like a good idea in any case; but I'm
> not sure that there isn't something else going on here.
> 
>                       regards, tom lane


Hi Tom,

Here is a backtrace from the test case script (using 8.4.3 as released):

#0  equalTupleDescs (tupdesc1=0x7f7f7f7f, tupdesc2=0x966c3b80) at tupdesc.c:311
311             if (tupdesc1->natts != tupdesc2->natts)
(gdb) bt
#0  equalTupleDescs (tupdesc1=0x7f7f7f7f, tupdesc2=0x966c3b80) at tupdesc.c:311
#1  0x0832451b in RelationClearRelation (relation=0x966c7998, rebuild=<value 
optimized out>) at relcache.c:1901
#2  0x08324b9f in RelationFlushRelation () at relcache.c:1991
#3  RelationCacheInvalidateEntry (relationId=7217555) at relcache.c:2042
#4  0x0831dd89 in LocalExecuteInvalidationMessage (msg=0x89e2b50) at inval.c:510
#5  0x0831d341 in ProcessInvalidationMessages (hdr=0x89d20f4, func=0x831dc50 
<LocalExecuteInvalidationMessage>)
    at inval.c:397
#6  0x0831d3dc in CommandEndInvalidationMessages () at inval.c:1006
#7  0x080c9035 in AtCommit_LocalCache () at xact.c:1009
#8  CommandCounterIncrement () at xact.c:634
#9  0x0826dcc9 in finish_xact_command () at postgres.c:2363
#10 0x0826ed4d in exec_simple_query (
    query_string=0x89b9904 "insert into foo_dest (id, name, size) select id, 
name, size from foobar_source")
    at postgres.c:1022
#11 0x0827042c in PostgresMain (argc=4, argv=0x894d5c8, username=0x894d590 
"postgres") at postgres.c:3614
#12 0x0823a4d3 in BackendRun () at postmaster.c:3449
#13 BackendStartup () at postmaster.c:3063
#14 ServerLoop () at postmaster.c:1387
#15 0x0823b503 in PostmasterMain (argc=4, argv=0x894a678) at postmaster.c:1040
#16 0x081dc0a6 in main (argc=4, argv=0x894a678) at main.c:188
(gdb) 

Hope that helps,

Rusty
--
Rusty Conover
rcono...@infogears.com
InfoGears Inc / GearBuyer.com / FootwearBuyer.com
http://www.infogears.com
http://www.gearbuyer.com
http://www.footwearbuyer.com







Reply via email to