Re: [APC-DEV] 3.0.x vs. 3.1.x

[email protected] (Gopal V) Fri, 28 Mar 2008 19:05:23 +0530
Newsgroups php.apc.dev
Message-ID <[email protected]>
Rasmus Lerdorf wrote:

> So at this point I think the strategy should be to take the .16 code and 
> only apply the bug fixes and the removal of the local cache stuff and 
> push out a .18 based on that.

Uhh... that was my initial plan for 0.17 :)

Rasmus  those are the ones I see are new for 3.0.17
g0pz    I think the memleak was a regression?
g0pz    and I don't think the apc_fetch bool one needs merge back
g0pz    is a feature change
g0pz    but I'll merge the sma_allocate() one. the apc_add() one and the
CVE?

I admit it... I was lazy to merge everything, but looks like being
lazy could be a virtue here :)

> It's 7am in Bangalore right now, so Gopal should be coming online in a 
> couple of hours.  He was playing with stuff last night, so let's see if 
> he has found something.

==19278== Invalid read of size 4
==19278==    at 0x4D7FE35: destroy_op_array (zend_opcode.c:228)
....
==19278==  Address 0x7A441F0 is 0 bytes inside a block of size 4 free'd
==19278==    at 0x4804EFA: free (vg_replace_malloc.c:235)
==19278==    by 0x4D6F954: _efree (zend_alloc.c:2274)
==19278==    by 0x5215469: apc_request_shutdown (apc_main.c:615)
==19278==    by 0x520D8B8: zm_deactivate_apc (php_apc.c:309)

Looks like the regression is in the memleak patches by shire. I didn't
pay enough attention when he committed it, but those leaks were ignored
or rather left in-limbo because of past bugs. Other parts of

http://news.php.net/php.pecl.cvs/10041

b0rks up this older "fix" :)

http://cvs.php.net/viewvc.cgi/pecl/apc/apc_main.c?r1=3.98&r2=3.99

The order in which extensions are unloaded and the way they use
memory makes it really hard for APC to zero-copy data without
leaks - memcpy'ing opcodes into local memory is a huge perf-hit,
but the workaround with huge refcounts introduces such leaks.

Maybe I should make it clearer in code.

Cheers,
Gopal
-- 
The difference between insanity and genius is measured by success