Segmentation Fault u testů

kminekmatej
Generous Backer | 37
+
0
-

Zdravím,

mám tu jednu nightmare chybu. PHP appka mi čas od času vyhodí SIGSEGV (Segmentation Fault). Zjistil jsem že se to dá poměrně často zreprodukovat u jednoho z mých autotestů a tak jsem si na ten autotest spustil xdebug tracer. Výsledný trace je dost šílený soubor (a nepovedlo se mi najít žádný funkční parser), nicméně co do něj tak koukám tak mi přijde že se zatočí samotná Nette aplikace na sekvenci:

-> Nette\Caching\Storages\FileStorage->readData() [nette/caching/src/Caching/Storages/FileStorage.php:85]
	   -> unserialize() [nette/caching/src/Caching/Storages/FileStorage.php:339]
			-> Nette\Database\Table\Selection->__destruct() [nette/caching/src/Caching/Storages/FileStorage.php:339]
				-> Nette\Database\Table\Selection->saveCacheState() [nette/database/src/Database/Table/Selection.php:103]
					-> Nette\Database\Table\SqlBuilder->getSelect() [nette/database/src/Database/Table/Selection.php:655]
			-> Nette\Database\Table\Selection->__destruct() [nette/caching/src/Caching/Storages/FileStorage.php:339]
				-> Nette\Database\Table\Selection->saveCacheState() [nette/database/src/Database/Table/Selection.php:103]
					-> Nette\Database\Table\SqlBuilder->getSelect() [nette/database/src/Database/Table/Selection.php:655]

… a takhle to rekurzivně jede ty tři řádky __destruct()->saveCacheState()->getSelect(), dokud to prostě nespadne (a nezpůsobí ten SIGSEGV nějak).

Takže čuju že to je způsobený nějakým blbým cachováním, ale moc si nevím s tím rady. Čekal jsem že jsem někde udělal botu u sebe v aplikaci, ale přitom to padá přímo na Nette zdrojácích. Zkoušel jsem i updatovat verzi PHP ze 7.1 na 7.2, ale padá to stejně.

Když vymažu cache, tak to pákrát projde, pak se to začne asi nějak štosovat a tak počtvrté, popáté to začne hlásit to samé.

Jedná se o Nette 2.4.

Pokud byste někdo měl nějaký nápad, budu Vám vděčen.

Díky,
Matěj

neznamy_uzivatel
Člen | 115
+
0
-

kminekmatej napsal(a):
(a nepovedlo se mi najít žádný funkční parser)

Kdysi jsem používal tohle a přečetlo to OK: https://sourceforge.net/…ncachegrind/
V mém případě to byl nízký memory_limit v php, padalo to při iteraci Selection v nějaké blbé chvíli, že to nevyhodilo klasickou chybu s překročením limitu paměti, ale právě segfault

Editoval neznamy_uzivatel (12. 2. 2020 13:02)