php55-fpm - kiedy będzie działać?

Adam Osuchowski adwol w zonk.pl
Pon, 21 Wrz 2015, 15:59:21 CEST


Jacek Osiecki wrote:
> Albo nie widzę, albo faktycznie nikt nie odpisał.
> Czy w ogóle nikt tutaj nie używa php-fpm?
> Świeżo stworzony vserver, wrzucone do niego php55, w tym php55-fpm.

Problem jest też z PHP 5.6 i chyba jest powiązany z grsecurity w kernelu
(chyba, że u Ciebie występuje na nie-grsecowym). Mnie pomaga patch
(w załączniku), którego sobie sam wystrugałem na własne potrzeby ale nie
wiem czy należałoby go pchać do repozytorium.

Co do problemu, to wg mnie wygląda to tak. Pamięć, która jest zwalniana
przez to zakomentowane free() jest alokowana przez emalloc() (wewnętrzna
funkcja php do zarządzania pamięcią). Powinna więc być zwolniona przez
efree() ponieważ te funkcje emalloc(), efree, estrdup() itd. dodają sobie
swoje własne sygnatury alokowanych kawałków i trzymają je dodatkowo w jakimś
drzewie. Użycie free() w tym miejscu jest chyba pomyłką. Ale pomimo zmiany 
tego na efree() nadal nic to nie pomogło. Przeanalizowałem jeszcze trochę
kodu ale w końcu skończyła mi się cierpliwość i czas i to zakomentowałem
w całości. Wiem, że w ten sposób powataje memory leak ale IMHO jest
niegroźny gdyż to jest wołane w funkcji php_shutdown_config(), która jest
z kolei wołana przy kończeniu się procesu php. Memory leak jest więc w
zasadzie czysto teoretyczny i tylko podczas kończenia działania, a nie
podczas normalnej pracy.

Jeżeli nie ma przeciwwskazań do zaaplikowania takiego bądź co bądź
partyzanckiego patcha to mogę go wsadzić do repozytorium.

-------------- następna część ---------
diff -ruNp php-5.6.13.orig/main/php_ini.c php-5.6.13/main/php_ini.c
--- php-5.6.13.orig/main/php_ini.c	2015-09-03 02:02:45.000000000 +0200
+++ php-5.6.13/main/php_ini.c	2015-09-18 12:55:56.454284557 +0200
@@ -726,7 +726,7 @@ int php_shutdown_config(void)
 {
 	zend_hash_destroy(&configuration_hash);
 	if (php_ini_opened_path) {
-		free(php_ini_opened_path);
+//		free(php_ini_opened_path);
 		php_ini_opened_path = NULL;
 	}
 	if (php_ini_scanned_files) {


Więcej informacji o liście pld-users-pl