AOL Webserver - Crashes with aolserver 4.5

This is Interesting: Free IT Magazines  
Home > Archive > AOL Webserver > November 2006 > Crashes with aolserver 4.5





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Crashes with aolserver 4.5
Agustin Lopez

2006-10-31, 7:11 am

Hello!


We are having several daily crashes of our production server
(aolserver 4.5 + openacs). We always got the next error line:

Tcl_SetBooleanObj called with shared object


Any body can get any help to resolve it?

Thanks,
Agustin



--

I am not young enough to know everything
Oscar Wilde

========================================
==============
| Jose Agustin Lopez Bueno |
| E-Mail: Agustin.Lopez@uv.es |
| Home Page: http://www.uv.es/~lopezj/ |
| http://www.uv.es/postman/ |
| Tfnos: +34-96-3544310 +34-96-3543129 |
| Fax: +34-96-3544200 |
| Servicio de Informatica, Univ. de Valencia, Spain |
========================================
==============


Zoran Vasiljevic

2006-10-31, 7:11 am

On 31.10.2006, at 12:28, Agustin Lopez wrote:

>
> Tcl_SetBooleanObj called with shared object


The problem is the construct:

Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)

as the Tcl_Obj stored in the interp result
may turn out to be shared under some circumstances.

You must rewrite all those occurrences into
something like:

Tcl_SetObjResult(interp, Tcl_NewXXXObj(...));

The Tcl-core is being rewritten to remove such
idioms from the code.

Alternatively, you can do:

Tcl_ResetResult(interp);
Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)

Some people advocate for the latter, as being
slightly faster. I could not verify that fact.

This is of course the obvious part. More hidden can
be if there is some memory corruption underway...
But in that case, you must be using some memory
debugging tool to nail it down.

Hope this helps,
Zoran


Agustin Lopez

2006-11-04, 7:11 pm

Thanks for the answer, Zoran!

Reading your post I think of I must find / replace
all the occurrences of

Tcl_SetObjResult(interp, Tcl_NewXXXObj(...));

by

Tcl_ResetResult(interp);
Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)

in all the code and libraries of aolserver?
(nsd, ns*, xotcl, tdom, ...)
Is it right?

Thanks again,
Agustin

Zoran Vasiljevic wrote:
> On 31.10.2006, at 12:28, Agustin Lopez wrote:
>
>
> The problem is the construct:
>
> Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)
>
> as the Tcl_Obj stored in the interp result
> may turn out to be shared under some circumstances.
>
> You must rewrite all those occurrences into
> something like:
>
> Tcl_SetObjResult(interp, Tcl_NewXXXObj(...));
>
> The Tcl-core is being rewritten to remove such
> idioms from the code.
>
> Alternatively, you can do:
>
> Tcl_ResetResult(interp);
> Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)
>
> Some people advocate for the latter, as being
> slightly faster. I could not verify that fact.
>
> This is of course the obvious part. More hidden can
> be if there is some memory corruption underway...
> But in that case, you must be using some memory
> debugging tool to nail it down.
>
> Hope this helps,
> Zoran
>
>
> --
> AOLserver - http://www.aolserver.com/
>
> To Remove yourself from this list, simply send an email to
> <listserv@listserv.aol.com> with the
> body of "SIGNOFF AOLSERVER" in the email message. You can leave the
> Subject: field of your email blank.
>



--

I am not young enough to know everything
Oscar Wilde

========================================
==============
| Jose Agustin Lopez Bueno |
| E-Mail: Agustin.Lopez@uv.es |
| Home Page: http://www.uv.es/~lopezj/ |
| http://www.uv.es/postman/ |
| Tfnos: +34-96-3544310 +34-96-3543129 |
| Fax: +34-96-3544200 |
| Servicio de Informatica, Univ. de Valencia, Spain |
========================================
==============


Zoran Vasiljevic

2006-11-05, 7:11 am

On 05.11.2006, at 01:11, Agustin Lopez wrote:

> Thanks for the answer, Zoran!
>
> Reading your post I think of I must find / replace
> all the occurrences of
>
> Tcl_SetObjResult(interp, Tcl_NewXXXObj(...));
>
> by
>
> Tcl_ResetResult(interp);
> Tcl_SetXXXObj(Tcl_GetObjResult(interp), ...)
>
> in all the code and libraries of aolserver?
> (nsd, ns*, xotcl, tdom, ...)
> Is it right?
>


Unfortunately yes. I believe it is better
that you ask the maintainers of the packages
to do that for you, as this would benefit
everyone.

It is not *strictly* necessary to do this
at every occurence. Only at those where you
anticipate that interp result may contain
a shared object. As this is not always
transparent to the casual reader, it is
in the end simpler to do a wholesale change.

Cheers
Zoran


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com