You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Günter Knauf <ef...@gmx.net> on 2002/10/01 23:02:07 UTC

Re: PHP and Apache 1.3 issue ...

Hi all,
I really wonder if nobody here on the list is able to answer this question although I thought most of the Apache core programmers are here....
I know this issue very well and would also like to get it solved cause we all on NetWare are living with it for months now...; and in addition Ramesh has only ONE day to get a fix in before his demo on Oct 3....
so can please someone reply and try to answer his question below??

thanks, Guenter.


> I posted this in the PHP-dev mailing list, but it appeared to me that
> the question is more relevant to the apache-dev mailing list. I am
> reposting it here. Any help would be greatly appreciated.

> --------------------
> One further piece of information:

> We can cleanly shutdown Apache 2.0 running the same PHP binaries without
> any issues. I just now confirmed that with Apache 2.0, the thread which
> is calling bc_new_num() is the *same* as the thread which calls
> bc_free_num(). bc_new_num() gets called 3 times by the *same* thread at
> PHP load time and gets called 3 times by the *same* thread at PHP unload
> time. This means that there must be way someway to "instruct" Apache 1.3
> to use the same thread for all related activities.

> Thanks,

> S.R.

> Ramesh Shankar wrote:
> As you may know, we are working to things lined up for the Oct 3 demo.
> We have run into a problem with shutting down Apache which is running
> PHP. I have provided the details from my posting on the PHP news group
> below. Any help you can offer in solving this issue would be greatly
> appreciated:


> ---------------------------- News posting ------------------------------
> I am trying to port PHP and I am running into a problem with Apache 1.3.
> I am not familiar with the PHP language by itself and I am used to
> working at the O.S. level and so any help would be greatly appreciated.
> I tried to read through archives, the readmes, FAQs etc, but I couldn't
> find answer for this question:

> When PHP is loaded with Apache 1.3 and Apache is shutdown, PHP 4.2.2
> crashes inside the routine _efree() called from bc_free_num(). I found
> the problem to be related to linked list corruption and on further
> investigation, suspected it to be a case of the thread calling
> bc_free_num() to be different from that of the thread that called
> bc_new_num(). I verfied this by enabling TSRM_DEBUG while building zend,
> which enables this detection in _efree(). I also set the
> tsrm_error_level to TSRM_ERROR_LEVEL_ERROR to enable dispalying of TSRM
> messages to the screen. And sure enough, I got an error message from
> _efree() from the following excerpt:

> #if defined(ZTS) && TSRM_DEBUG
>     if (p->thread_id != tsrm_thread_id()) {
>         tsrm_error(TSRM_ERROR_LEVEL_ERROR, "Memory block allocated at
> %s:(%d) on thread %x freed at %s:(%d) on thread %x, ignoring",
>             p->filename, p->lineno, p->thread_id,
>             __zend_filename, __zend_lineno, tsrm_thread_id());
>         return;
>     }
> #endif

> I have ZTS defined thread support in Zend.

> I am not able to understand and appreciate all the details of the use of
> the macros to access the globals variables via AG(), CG() etc and from
> what I could figure out, ts_resource_ex()is some kind of thread specific
> data mechanism and would work only if threads are dedicated to PHP.

> I am not able to understand who is responsible for ensuring that the
> same thread gets used for a complete request - whether it is some thing
> that I need to do in Apache or whether I need to enable/disable
> something while compiling PHP.

> Any help would be greatly appreciated. Please copy me on your reply as
> well.

> Thanks in advance,

> S.R.