Re: pltcl broken on tcl8.5 ?

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: pltcl broken on tcl8.5 ?
Дата
Msg-id 4856DC0C.1030806@dunslane.net
обсуждение исходный текст
Ответ на Re: pltcl broken on tcl8.5 ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: pltcl broken on tcl8.5 ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>   
>> Buildfarm bobcat is broken running the pltcl regression tests - see 
>> http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=bobcat&dt=2008-06-15%2022:43:01
>>     
>
>   
>> and I have reproduced this on Fedora 9 myself. This distro has Tcl 8.5.1.
>>     
>
> Hoo, nasty.  Tcl_GetVar() is resetting interp->result.  Not sure why
> we didn't see this before ... maybe it didn't use to?  Anyway, the
> order of execution in
>
>         ereport(ERROR,
>                 (errmsg("%s", interp->result),
>                  errcontext("%s\nin PL/Tcl function \"%s\"",
>                             UTF_U2E(Tcl_GetVar(interp, "errorInfo",
>                                                TCL_GLOBAL_ONLY)),
>                             prodesc->user_proname)));
>
> is machine-dependent, which explains why I didn't see it on HPPA.
>   

According to the manual page that's only supposed to happen if the 
TCL_LEAVE_ERR_MSG flag is used:


TCL_LEAVE_ERR_MSG
If an error is returned and this bit is set in flags, then an
error message will be left in the interpreter’s result, where it
can be retrieved with Tcl_GetObjResult or Tcl_GetStringResult.
If this flag bit isn’t set then no error message is left and the
interpreter’s result will not be modified.


So this looks like a bug. I guess we could work around it by saving out 
interp->result first. As you say, nasty.


cheers

andrew


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pltcl broken on tcl8.5 ?
Следующее
От: David Fetter
Дата:
Сообщение: Re: Crash in pgCrypto?