Re: [HACKERS] CURRENT: crash in select_view regression test...

From: Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk>
To: vadim(at)krs(dot)ru, jwieck(at)debis(dot)com
Cc: hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] CURRENT: crash in select_view regression test...
Date: 1998-12-18 01:16:41
Message-ID: 199812180116.BAA07749@mtcc.demon.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I think I need some help here

Taking part of the pg_views rule shows it thinks the views
are NOT views.

postgres=> SELECT relname AS viewname, pg_get_userbyid(relowner) AS viewowner,
pg_get_viewdef(relname) AS definition FROM pg_class WHERE relhasrules;
viewname |viewowner|definition
----------+---------+----------
pg_user |postgres |Not a view
pg_rules |postgres |Not a view
pg_views |postgres |Not a view
pg_tables |postgres |Not a view
pg_indexes|postgres |Not a view
(5 rows)

If I select from the view I get a BE crash.

postgres=> select * from pg_views;
pqReadData() -- backend closed the channel unexpectedly.
This probably means the backend terminated abnormally before or while processing the
request.
We have lost the connection to the backend, so further processing is impossible. Terminating.

Here's the backtrace...

Program received signal SIGSEGV, Segmentation fault.
0xbcd64 in ApplyRetrieveRule (parsetree=0x1f0790, rule=0xefffaf20, rt_index=1, relation_level=1,
relation=0x1f0690, modified=0xefffaf1c) at rewriteHandler.c:1817
1817 rtable = nconc(rtable, copyObject(rule_action->rtable));
(gdb) bt
#0 0xbcd64 in ApplyRetrieveRule (parsetree=0x1f0790, rule=0xefffaf20, rt_index=1,
relation_level=1,
relation=0x1f0690, modified=0xefffaf1c) at rewriteHandler.c:1817
#1 0xbd250 in fireRIRrules (parsetree=0x1f0790) at rewriteHandler.c:2079
#2 0xbd950 in QueryRewrite (parsetree=0x198a50) at rewriteHandler.c:2615
#3 0xceeb4 in pg_parse_and_plan (query_string=0xefffd1a0 "select * from pg_views;", typev=0x0,
nargs=0,
queryListP=0xefffd094, dest=Remote, aclOverride=0 '\000') at postgres.c:505
#4 0xcf290 in pg_exec_query_dest (query_string=0xefffd1a0 "select * from pg_views;",
dest=Remote,
aclOverride=0 '\000') at postgres.c:722
#5 0xcf244 in pg_exec_query (query_string=0xefffd1a0 "select * from pg_views;") at
postgres.c:699
#6 0xd0588 in PostgresMain (argc=-8192, argv=0x15dc00, real_argc=10, real_argv=0xeffffd84) at
postgres.c:1646
#7 0xb2fd4 in DoBackend (port=0x135800) at postmaster.c:1532
#8 0xb2a60 in BackendStartup (port=0x199c00) at postmaster.c:1303
#9 0xb1ec8 in ServerLoop () at postmaster.c:757
#10 0xb1a10 in PostmasterMain (argc=0, argv=0xeffffd84) at postmaster.c:563
#11 0x83f14 in main (argc=10, argv=0xeffffd84) at main.c:93

If I start looking around in ruleutils.c why can't I see "spirc"??

Breakpoint 2, pg_get_viewdef (rname=0xe01d56a0) at ruleutils.c:277
277 if (spirc != SPI_OK_SELECT)
(gdb) print spirc
No symbol "spirc" in current context.
(gdb) list
272 args[1] = PointerGetDatum(name2);
273 nulls[0] = ' ';
274 nulls[1] = ' ';
275 nulls[2] = '\0';
276 spirc = SPI_execp(plan_getview, args, nulls, 1);
277 if (spirc != SPI_OK_SELECT)
278 elog(ERROR, "failed to get pg_rewrite tuple for view %s", rulename);
279 if (SPI_processed != 1)
280 tmp = "Not a view";
281 else

Jan in particular, any idea what's happening here?

Keith.

Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk>
> Appologies,
>
> It looks like this was not the fix, as I'm still getting the
> Bad node message....
>
>
> Will continue investigating.
>
> Keith.
>
> Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk>
> >
> > Vadim Mikheev <vadim(at)krs(dot)ru>
> > >
> > > Keith Parks wrote:
> > > >
> > > > Vadim Mikheev <vadim(at)krs(dot)ru>
> > > > >
> > > > > ... in SELECT * FROM street;
> > > > >
> > > >
> > > > No crash just:-
> > > >
> > > > regression=> select * from street;
> > > > ERROR: nodeRead: Bad type 0
> > > > regression=>
> > >
> > > It seems platform dependent...
> > > Bugs are in readfuncs.c
> > >
> >
> > I think I've found it, a simple typo in outfuncs.c.
> >
> > Looks like :vartypmod got transmuted to %vartypmod in an editing session.
> >
> > Here's the patch,
> >
> > Keith.
> >
> > *** src/backend/nodes/outfuncs.c.orig Thu Dec 17 12:01:02 1998
> > --- src/backend/nodes/outfuncs.c Thu Dec 17 12:01:22 1998
> > ***************
> > *** 634,640 ****
> > _outVar(StringInfo str, Var *node)
> > {
> > appendStringInfo(str,
> > ! " VAR :varno %d :varattno %d :vartype %u %vartypmod %d ",
> > node->varno,
> > node->varattno,
> > node->vartype,
> > --- 634,640 ----
> > _outVar(StringInfo str, Var *node)
> > {
> > appendStringInfo(str,
> > ! " VAR :varno %d :varattno %d :vartype %u :vartypmod %d ",
> > node->varno,
> > node->varattno,
> > node->vartype,
> >
> >
>

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message PCblazer 1998-12-18 02:34:58 Total Multimedia Board & CPU deal
Previous Message Hiroshi Inoue 1998-12-18 00:56:49 RE: [HACKERS] redolog - for discussion