"[Uwaga] błąd segmentacji sygnału wyjściowego PID XXXX (11) " w błędzie apache.dziennik [zamknięty]

Używam stosu Apache / PHP / MySQL.
Używanie jako framework CakePHP.

Od czasu do czasu dostaję pustą białą stronę. Nie mogę debugować przez Cake, więc zaglądam w błąd apache.log i oto co dostaję:

[Wed Oct 12 15:27:23 2011] [notice] child pid 3580 exit signal Segmentation fault (11)
[Wed Oct 12 15:27:34 2011] [notice] child pid 3581 exit signal Segmentation fault (11)
[Wed Oct 12 15:30:52 2011] [notice] child pid 3549 exit signal Segmentation fault (11)
[Wed Oct 12 16:04:27 2011] [notice] child pid 3579 exit signal Segmentation fault (11)
zend_mm_heap corrupted
[Wed Oct 12 16:26:24 2011] [notice] child pid 3625 exit signal Segmentation fault (11)
[Wed Oct 12 17:57:24 2011] [notice] child pid 3577 exit signal Segmentation fault (11)
[Wed Oct 12 17:58:54 2011] [notice] child pid 3550 exit signal Segmentation fault (11)
[Wed Oct 12 17:59:52 2011] [notice] child pid 3578 exit signal Segmentation fault (11)
[Wed Oct 12 18:01:38 2011] [notice] child pid 3683 exit signal Segmentation fault (11)
[Wed Oct 12 22:20:53 2011] [notice] child pid 3778 exit signal Segmentation fault (11)
[Wed Oct 12 22:29:51 2011] [notice] child pid 3777 exit signal Segmentation fault (11)
[Wed Oct 12 22:33:42 2011] [notice] child pid 3774 exit signal Segmentation fault (11)

Czym jest ten błąd segmentacji i jak mogę go naprawić?

Aktualizacja:

PHP Version 5.3.4, OSX local development
Server version: Apache/2.2.17 (Unix)
CakePhp: 1.3.10
Author: Flimzy, 2011-10-12

3 answers

Podłącz gdb do jednego z procesów potomnych httpd i przeładuj lub kontynuuj pracę, poczekaj na awarię, a następnie spójrz na ślad. Zrób coś takiego:

$ ps -ef|grep httpd
0     681     1   0 10:38pm ??         0:00.45 /Applications/MAMP/Library/bin/httpd -k start
501   690   681   0 10:38pm ??         0:00.02 /Applications/MAMP/Library/bin/httpd -k start

...

Teraz dołącz gdb do jednego z procesów potomnych, w tym przypadku PID 690 (kolumny to UID, PID, PPID, ...)

$ sudo gdb
(gdb) attach 690
Attaching to process 690.
Reading symbols for shared libraries . done
Reading symbols for shared libraries ....................... done
0x9568ce29 in accept$NOCANCEL$UNIX2003 ()
(gdb) c
Continuing.
Poczekaj na Crasha... wtedy:
(gdb) backtrace

Lub

(gdb) backtrace full

Powinien dać ci jakąś wskazówkę, o co chodzi. Jeśli zgłosisz błąd, powinieneś dołączyć backtrace.

Jeśli awaria jest trudna do odtworzenia dobrym pomysłem może być skonfigurowanie Apache tak, aby obsługiwał tylko jeden proces potomny. Config jest podobny do tego:

StartServers 1
MinSpareServers 1
MaxSpareServers 1
 55
Author: Mattias Wadman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-13 10:15:51

Błąd segementacji jest wewnętrznym błędem w php (lub, mniej prawdopodobne, apache). Często błąd segmentacji jest spowodowany przez jeden z nowszych i słabiej przetestowanych modułów php, takich jak imagemagick lub subversion.

Spróbuj wyłączyć wszystkie nieistotne Moduły (w php.ini), a następnie ponownie włączyć je jeden po drugim, aż do wystąpienia błędu. Możesz również zaktualizować php i apache.

Jeśli to nie pomoże, powinieneś zgłosić błąd php .

 18
Author: phihag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-12 19:46:11

Czy próbowałeś zwiększyć output_buffering w swoim php.ini?

Co oznacza "zend_mm_heap corrupted" ?

 16
Author: Wayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:17