Nette\Database masssssive memory leaks

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Filip Procházka
Moderator | 4668
+
0
-

Nebudu tady brečet, že jsem zabil 5 dní hledáním chyby… Tak jo budu… 5 dní jsem hledal chybu ve svém dokonalém kódu a ona tam nebyla!!

V PDO bude nějaký hnusný error, protože když zakomentuju tenhle řádek, najednou vše funguje.

class Nette\Database\Statement extends \PDOStatement
{
	protected function __construct(Connection $connection)
	{
//		$this->setFetchMode(PDO::FETCH_CLASS, 'Nette\Database\Row', array($this));
	}

Destructor se nad řádkem podle všeho volá správně, ale paměť se neuvolní. Když ale PDO nepoužívá tuhle třídu, tak se paměť uvolňuje správně. Nemám už sílu ani hledat, jestli to není reportovaný bug v PHP. Jdu se opít, zdar.

$ php -v
PHP 5.3.11-dev (cli) (built: May 20 2012 15:54:01)
Zend Engine v2.3.0 with Xdebug v2.2.0

$ php -v
PHP 5.4.0 (cli) (built: Mar 27 2012 11:57:01)
Zend Engine v2.4.0

PS: tak jsem nakonec udělal test case https://gist.github.com/2771142

PS2: a reportoval jako bug PHPka https://bugs.php.net/bug.php?…

Editoval HosipLan (22. 5. 2012 22:14)

Jan Tvrdík
Nette guru | 2595
+
0
-

Co takhle verze PHP a platforma?

jtousek
Člen | 951
+
0
-

https://bugs.php.net/bug.php?…

Nevím jestli je to jeden bug nebo ne, tady je to hlášené s FETCH_INTO místo FETCH_CLASS.

Editoval jtousek (22. 5. 2012 21:20)

David Grudl
Nette Core | 8080
+
0
-

U PDO mě už nic nemůže překvapit. Třeba tuhle chybu jsem izoloval celý den.

hrach
Člen | 1834
+
0
-

Tož, uz je to přepracované. Zatím je to takový work in progress, dostavam se konecne k rozsahlejsim zmenam.

https://github.com/…its/f-db-dev

Filip Procházka
Moderator | 4668
+
0
-

OMG! Opět jsem na to narazil… a opět jsem to půl dne izoloval.

tomask
Člen | 9
+
0
-

Jak to izoluješ? Bohužel jsem taky narazil. V importním CLI skriptu potřebuji vložit několik desetitisíc řádků a přesně na volání Nette\Database\Statement s parametrem v konstruktoru (který se volá s každým insertem/dotazem) mi to po pár tisísích řádcích přeteče :/

Dost opruz, modely napsané v Nette\Database a pro tento ůčl nepoužitelné.

Filip Procházka
Moderator | 4668
+
0
-

Použil jsem hrachův fork, má v jedné z branchí tento leak opravený. Vyzkoušej, už netuším která to byla.

spaze
Generous Backer | 28
+
0
-

Aby vám to nebylo líto, tak jsem nad tímhle problémem taky teď spálil půl dne. Nebo vlastně půl noci. Ale ještěže mě napadlo použít ten Google.

Koukal jsem, že hrachův fix je už v masteru a milestone nastaven na 2.1, nějaká šance, že by se ty memleaky vyřešily už v 2.0.x?

Díky.

David Grudl
Nette Core | 8080
+
0
-

Jelikož si to vyžádalo kompletní překopání včetně BC breaků, tak to bude až ve 2.1. Soon!