Re: [PORTS] RedHat6.0 & Alpha

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [PORTS] RedHat6.0 & Alpha
Дата
Msg-id 199909232201.SAA26551@candle.pha.pa.us
обсуждение исходный текст
Ответ на RedHat6.0 & Alpha  (Uncle George <gatgul@voicenet.com>)
Ответы Re: [HACKERS] Re: [PORTS] RedHat6.0 & Alpha  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Can anyone address the status of this bug?


> In the regression test rules.sql there is this SQL command
>
>         update rtest_v1 set a = rtest_t3.a + 20 where b = rtest_t3.b;
>
> Which causes my alpha port to go core.  The above line can be reduced to:
>
>         update rtest_v1 set a = rtest_t3.a + 20 ;
>
> which also causes the same problem. It seems that the 64 bit address
> ((Expr*)nodeptr)->oper gets truncated ( high 32 bits ) somewhere along the way.
>
> I was able to locate the errant code in  rewriteManip.c:712. but There seems to be a
> bigger problem other than eraseing the upper 32bit address. It seems that
> FindMatchingNew() returns a node of type T_Expr, rather than the expected  type of
> T_Var.  Once u realize this then u can see why the now MISCAST "(Var *)
> *nodePtr)->varlevelsup = this_varlevelsup" will cause a problem.  On my alpha this erases
> a portion in the address in the T_Expr. On the redhat 5.2/i386 this code seems to be
> benign, BUT YOU ARE ERASEING SOMETHING that doesn't belong to to T_Expr !
>
> So what gives?
> gat
> Maybe an assert() will help in finding some of the miscast returned types? Wuddya think?
> sure would catch some of the boo-boo's hanging around
>
> rewriteManip.c:
>               if (this_varno == info->new_varno &&
>                     this_varlevelsup == sublevels_up)
>                 {
>                     n = FindMatchingNew(targetlist,
>                                         ((Var *) node)->varattno);
>                     if (n == NULL)
>                     {
>                         if (info->event == CMD_UPDATE)
>                         {
>                             *nodePtr = n = copyObject(node);
>                             ((Var *) n)->varno = info->current_varno;
>                             ((Var *) n)->varnoold = info->current_varno;
>                         }
>                         else
>                             *nodePtr = make_null(((Var *) node)->vartype);
>                     }
>                     else
>                     {
>                         *nodePtr = copyObject(n);
>                        ((Var *) *nodePtr)->varlevelsup = this_varlevelsup;    /* This
> line zaps the address */
>                     }
>                 }
>
>
>
>
>
>
>


--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Progress report: buffer refcount bugs and SQL functions
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [PORTS] Re: [HACKERS] RedHat6.0 & Alpha