Re: problem with EG(uninitialized_zval_ptr)
| From: | Thies C. Arntzen | Date: | Mon, 28 Oct 2002 16:11:25 +0000 |
| Subject: | Re: problem with EG(uninitialized_zval_ptr) | ||
| References: | 1 2 3 4 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-90213@lists.php.net to get a copy of this message | ||
On Mon, Oct 28, 2002 at 05:49:44PM -0800, Zeev Suraski wrote:
> At 07:35 28/10/2002, Thies C. Arntzen wrote:
> >On Mon, Oct 28, 2002 at 05:24:38PM +0200, Stanislav Malyshev wrote:
> >> TCA>> but zval_ptr_dtor (used in assert.c-OnChangeCallback) checks
> >> TCA>> against EG(uninitialized_zval_ptr) - so calling zval_ptr_dtor
> >> TCA>> anytime before init_executor will cause an UMR.
> >>
> >> Actually, zval_ptr_dtor calls zval_dtor, which does much more EG(...)
> >> games than just EG(uninitialized_zval_ptr). So I guess calling
> >> zval_ptr_dtor before init_executor is unwise indeed...
> >
> > yep - but can we simply move init_executor a bit "up"?
>
> Probably not. Can you simply fix the OnChange callback? :) NULL up the
> ASSERTG(callback) on time?
it is(!) nulled in the globals_ctor. the problem is that the
OnChange gets called quite a few times (tested in cli-mode).
and the 2nd call will dtor the "empty" value set by the 1st
call.
also i don't really think that assert.c is the deal here, the
real problem is that we might use parts of the engine "too"
early in many places in the code that i haven't spotted so
far. (and it's a _very_ hard to find thing - i found it using
valgrind)
re,
tc
>
> Zeev
--
Thies C. Arntzen - Looking for all sorts of freelance work - just ask..
http://www.amazon.de/exec/obidos/wishlist/AB9DY62QWDSZ