Subject: cache bug fixed in 4.0(.1)?

From: David Feldcamp <[email-masked]>
Date: Wed, 19 Aug 92 10:08:28 -0700

I am afraid that I am yet another person whose V3.1 installation has decided to start
failing while I wait for 4.0.1.

I am getting persistent backend crashes in cache functions.  It has gotten to the point
that my application cannot be used for a significant period without an inevitable backend
crash.  This happens for a number
of different queries which seem to always work at least once before failing.  The start
of the problem seems to have had no logical cause, except perhaps that I had recently
extended my schema (as I have done a number of time in the past with no problem).  However,
the changes had little or no impact on the schema components accessed by the queries.

I have included an example dbx output below for one crash.  I would like to know if
this is a known and/or fixed problem in the newer versions and if there is any workaround
until 4.0.1 is available.  Also, I would very much appreciate an update on the the
expected availability of 4.0.1.

Thx.

arcadia.DF[107]: dbx /logic/postgres/bin/postgres
Reading symbolic information...
warning: can't find 'scan.c'
warning: can't find 'scanner.c'
warning: can't find 'scanner.c'
warning: can't find 'plannodes.c'
warning: can't find 'primnodes.c'
warning: can't find 'relation.c'
warning: can't find 'execnodes.c'
Read 68737 symbols
program terminated by signal BUS (alignment error)
(dbx) w
MemoryContextAlloc() at 0x93a14
palloc() at 0x94014
heap_beginscan() at 0x5d94
SearchSysCache() at 0x9c0b8
SearchSysCacheTuple() at 0x9dcfc
get_relstub(relid = 135776, no = 0, islastP = 0xf7ffcbff "H"), line 476 in "../../../src/lib/C/lsyscache.c"
prs2GetRelationStubs() at 0x7ad70
prs2MakeRelationRuleInfo() at 0x794a8
InitScanRelation(node = 0x1af5c0, estate = 0x1b6568, scanstate = 0x1b81e8, outerPlan = (nil)), line 242 in "../../../src/executor/n_seqscan.c"
ExecInitSeqScan(node = 0x1af5c0, estate = 0x1b6568, parent = 0x1b0700), line 374 in "../../../src/executor/n_seqscan.c"
ExecInitNode(node = 0x1af5c0, estate = 0x1b6568, parent = 0x1b0700), line 252 in "../../../src/executor/ex_procnode.c"
ExecInitSort(node = 0x1b0700, estate = 0x1b6568, parent = 0x1b0760), line 351 in "../../../src/executor/n_sort.c"
ExecInitNode(node = 0x1b0700, estate = 0x1b6568, parent = 0x1b0760), line 280 in "../../../src/executor/ex_procnode.c"
InitScanRelation(node = 0x1b0760, estate = 0x1b6568, scanstate = 0x1b7fb8, outerPlan = 0x1b0700), line 260 in "../../../src/executor/n_seqscan.c"
ExecInitSeqScan(node = 0x1b0760, estate = 0x1b6568, parent = 0x1b0f18), line 374 in "../../../src/executor/n_seqscan.c"
ExecInitNode(node = 0x1b0760, estate = 0x1b6568, parent = 0x1b0f18), line 252 in "../../../src/executor/ex_procnode.c"
ExecInitMergeJoin(node = 0x1b0f18, estate = 0x1b6568, parent = 0x1b1e90), line 1136 in "../../../src/executor/n_mergejoin.c"
ExecInitNode(node = 0x1b0f18, estate = 0x1b6568, parent = 0x1b1e90), line 268 in "../../../src/executor/ex_procnode.c"
ExecInitMergeJoin(node = 0x1b1e90, estate = 0x1b6568, parent = 0x1b22f8), line 1136 in "../../../src/executor/n_mergejoin.c"
ExecInitNode(node = 0x1b1e90, estate = 0x1b6568, parent = 0x1b22f8), line 268 in "../../../src/executor/ex_procnode.c"
ExecInitNestLoop(node = 0x1b22f8, estate = 0x1b6568, parent = 0x1b2848), line 454 in "../../../src/executor/n_nestloop.c"
ExecInitNode(node = 0x1b22f8, estate = 0x1b6568, parent = 0x1b2848), line 264 in "../../../src/executor/ex_procnode.c"
ExecInitNestLoop(node = 0x1b2848, estate = 0x1b6568, parent = 0x1b6348), line 454 in "../../../src/executor/n_nestloop.c"
ExecInitNode(node = 0x1b2848, estate = 0x1b6568, parent = 0x1b6348), line 264 in "../../../src/executor/ex_procnode.c"
ExecInitSort(node = 0x1b6348, estate = 0x1b6568, parent = (nil)), line 351 in "../../../src/executor/n_sort.c"
ExecInitNode(node = 0x1b6348, estate = 0x1b6568, parent = (nil)), line 280 in "../../../src/executor/ex_procnode.c"
InitPlan(operation = 278, parseTree = 0x1cd810, plan = 0x1b6348, estate = 0x1b6568), line 365 in "../../../src/executor/ex_main.c"
ExecMain(queryDesc = 0x1b6418, estate = 0x1b6568, feature = 0x1b6668), line 162 in "../../../src/executor/ex_main.c"
ProcessQueryDesc(queryDesc = 0x1b6418), line 352 in "../../../src/tcop/pquery.c"
ProcessQuery(parsertree = 0x1cd810, plan = 0x1b6348, dest = Remote), line 444 in "../../../src/tcop/pquery.c"
pg_eval_dest(query_string = 0xf7ffd8b4 "retrieve (b.node, a.node, b.edge, f.weight, f.width, f.color) from a, b in graph, d in node, f in edge where (d.vid = 1) and (d.mid = 1) and (d.name = a.node) and (a.mid = 1) and (a.edge != 0) and (views.pid = 1) and (views.name = b.node) and (b.mid = 1) and (a.oid != b.oid) and (a.edge = b.edge) and (a.edge = f.id) and (f.mid = 1) sort by node", dest = Remote), line 785 in "../../../src/tcop/postgres.c"
pg_eval(query_string = 0xf7ffd8b4 "retrieve (b.node, a.node, b.edge, f.weight, f.width, f.color) from a, b in graph, d in node, f in edge where (d.vid = 1) and (d.mid = 1) and (d.name = a.node) and (a.mid = 1) and (a.edge != 0) and (views.pid = 1) and (views.name = b.node) and (b.mid = 1) and (a.oid != b.oid) and (a.edge = b.edge) and (a.edge = f.id) and (f.mid = 1) sort by node"), line 441 in "../../../src/tcop/postgres.c"
PostgresMain(argc = 5, argv = 0xf7fff99c), line 1397 in "../../../src/tcop/postgres.c"
main(argc = 5, argv = 0xf7fff99c), line 26 in "../../../src/main/main.c"
(dbx) list
  476       tuple = SearchSysCacheTuple(PRS2STUB,relid,no,0,0);
  477   
  478       if (HeapTupleIsValid(tuple)) {
  479   	prs2stubStruct = (Form_pg_prs2stub) GETSTRUCT(tuple);
  480   	/*
  481   	 * NOTE:
  482   	 * skip the 4 first bytes to get the actual
  483   	 * varlena struct
  484   	 */
  485   	relstub = (struct varlena *) PSIZESKIP( & (prs2stubStruct->prs2stub) );
(dbx) dump
retval = 0x322fc
tuple = 0xbdf48
relstub = 0xf7ffcbb8
prs2stubStruct = 0x90901080
islastP = 0xf7ffcbff "H"
no = 0
relid = 135776
(dbx)