Bug #53454 [Csd->Bgs]: Memory leak when using non-static class member as static one or inversely

From: Date: Fri, 03 Dec 2010 21:35:56 +0000
Subject: Bug #53454 [Csd->Bgs]: Memory leak when using non-static class member as static one or inversely
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-156750@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=53454&edit=1

 ID:                 53454
 Updated by:         cataphract@php.net
 Reported by:        hritter at e-onsoftware dot com
 Summary:            Memory leak when using non-static class member as
                     static one or inversely
-Status:             Closed
+Status:             Bogus
 Type:               Bug
 Package:            Performance problem
 Operating System:   Linux gentoo
 PHP Version:        5.2.14
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2010-12-02 19:55:18] hritter at e-onsoftware dot com

I am really confused, the leak was due to the PHP debugger I
implemented. (No leak when test the bug without this debugger)

------------------------------------------------------------------------
[2010-12-02 19:36:50] hritter at e-onsoftware dot com

Description:
------------
I had some memory overflow errors. I logged the memory usage step by
step and then I see a difference of 50Mo between two logs.

In the method called between this two logs, I used a static class
attribute as a non-static one (with $this). The modification on the
attribute took effect but triggered an "Interoperability or
Compatibility Notice".
I fixed this error and I had a gain of 50 Mo!!

I have the same bug with a non-static method used as a static method
(with self::). I had a gain of 90Mo because this method was really far
away in the code.


It is a pretty harsh punishment for a compatibility error ;-)

Test script:
---------------
class LeakTester
{
	private static $nTest = 0;

	public function Test()
	{
		$this->nTest++;
		echo $this->nTest."<br/>\n";
	}
}

// ---> Test
$oTest = new LeakTester();
$oTest->Test();
echo memory_get_usage()."<br/>\n"; // (1)
$oTest->Test();
echo memory_get_usage()."<br/>\n"; // (2) > (1)

Expected result:
----------------
(2) should be equal to (1)

Actual result:
--------------
(2) is really greater than (1)


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53454&edit=1


Thread (3 messages)

« previous php.bugs (#156750) next »