1 (10.10.2014 15:33:15 отредактировано shahriyar_r)

уважаемые эксперты,
я обнаружил критическую проблему , после новой установки Nginx, PHP-FPM.


Release : CentOS release 6.5 (Final)
Kernel   :   2.6.32-431.29.2.el6.x86_64


[root@web3 ~]# nginx -v
nginx version: nginx/1.6.2
[root@web3 ~]# php-fpm -v
PHP 5.3.3 (fpm-fcgi) (built: Sep 30 2014 05:57:02)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Есть несколько php script-ов, работающих на cron-e. через некоторое время есть ошибки в виде:
от dmesg:

php[25666]: segfault at ffffffff ip 000000000058b19f sp 00007fffbaee4570 error 4 in php[400000+2c0000]
php[26630]: segfault at ffffffff ip 000000000058b19f sp 00007fffc9f12db0 error 4 in php[400000+2c0000]
php[27588]: segfault at ffffffff ip 000000000058b19f sp 00007fffa2ce31f0 error 4 in php[400000+2c0000]
php[28527]: segfault at ffffffff ip 000000000058b19f sp 00007fff98a5e9c0 error 4 in php[400000+2c0000]
php[29498]: segfault at 43a11 ip 000000000058b1f9 sp 00007fffeedbe290 error 4 in php[400000+2c0000]
php[31074]: segfault at ffffffff ip 000000000058b19f sp 00007fff7edd0050 error 4 in php[400000+2c0000]
php[32250]: segfault at ffffffff ip 000000000058b19f sp 00007fffb1750660 error 4 in php[400000+2c0000]
php[885]: segfault at ffffffff ip 000000000058b19f sp 00007fffa7ab4ba0 error 4 in php[400000+2c0000]
php[2083]: segfault at ffffffff ip 000000000058b19f sp 00007fff2c575840 error 4 in php[400000+2c0000]
php[2969]: segfault at 167c5 ip 000000000058b1f9 sp 00007fff79015a40 error 4 in php[400000+2c0000]
php[5533]: segfault at 18 ip 000000000058b1f9 sp 00007fff312123f0 error 4 in php[400000+2c0000]
php[7156]: segfault at ffffffff ip 000000000058b19f sp 00007ffff4053b20 error 4 in php[400000+2c0000]
php[7227]: segfault at ffffffff ip 000000000058b19f sp 00007fff8c7739c0 error 4 in php[400000+2c0000]
php[8859]: segfault at ffffffff ip 000000000058b19f sp 00007fff03f38c70 error 4 in php[400000+2c0000]
php[10189]: segfault at ffffffff ip 000000000058b19f sp 00007fffb25b23c0 error 4 in php[400000+2c0000]
php[11542]: segfault at ffffffff ip 000000000058b19f sp 00007fffebcc0460 error 4 in php[400000+2c0000]
php[13235]: segfault at ffffffff ip 000000000058b19f sp 00007fffe54f7fe0 error 4 in php[400000+2c0000]
php[14543]: segfault at ffffffff ip 000000000058b19f sp 00007fffe67ff600 error 4 in php[400000+2c0000]

от /var/log/messages:

Oct 10 11:54:51 web3 kernel: php[25666]: segfault at ffffffff ip 000000000058b19f sp 00007fffbaee4570 error 4 in php[400000+2c0000]
Oct 10 11:54:52 web3 abrtd: Directory 'ccpp-2014-10-10-11:54:51-25666' creation detected
Oct 10 11:54:52 web3 abrt[25667]: Saved core dump of pid 25666 (/usr/bin/php) to /var/spool/abrt/ccpp-2014-10-10-11:54:51-25666 (48975872 bytes)
Oct 10 11:55:17 web3 abrtd: Sending an email...
Oct 10 11:55:17 web3 abrtd: Email was sent to: root@localhost

от coredump:

Core was generated by `/usr/bin/php /home/menbe/public_html/Grab/index-console.php Test *****'.
Program terminated with signal 11, Segmentation fault.
#0  zend_mm_remove_from_free_list (heap=<value optimized out>, mm_block=0x2c43d78) at /usr/src/debug/php-5.3.3/Zend/zend_alloc.c:826
826                ZEND_MM_CHECK_TREE(mm_block);

(gdb) bt
#0  zend_mm_remove_from_free_list (heap=<value optimized out>, mm_block=0x2c43d78) at /usr/src/debug/php-5.3.3/Zend/zend_alloc.c:826
#1  0x000000000058b3b5 in _zend_mm_free_int (heap=0x26582b0, p=0x2c43d28) at /usr/src/debug/php-5.3.3/Zend/zend_alloc.c:2019
#2  0x00000000005b4b91 in zend_hash_destroy (ht=0x50618b8) at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:531
#3  0x00000000005a052a in destroy_zend_class (pce=<value optimized out>) at /usr/src/debug/php-5.3.3/Zend/zend_opcode.c:191
#4  0x00000000005b4835 in zend_hash_apply_deleter (ht=0x2658c00, p=0x2d14040) at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:609
#5  0x00000000005b4939 in zend_hash_reverse_apply (ht=0x2658c00, apply_func=0x59b750 <clean_non_persistent_class>)
    at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:758
#6  0x000000000059c45e in shutdown_executor () at /usr/src/debug/php-5.3.3/Zend/zend_execute_API.c:312
#7  0x00000000005a8c22 in zend_deactivate () at /usr/src/debug/php-5.3.3/Zend/zend.c:890
#8  0x0000000000556805 in php_request_shutdown (dummy=<value optimized out>) at /usr/src/debug/php-5.3.3/main/main.c:1634
#9  0x0000000000631214 in main (argc=4, argv=0x7fffbaee4e98) at /usr/src/debug/php-5.3.3/sapi/cli/php_cli.c:1373

(gdb) bt full
#0  zend_mm_remove_from_free_list (heap=<value optimized out>, mm_block=0x2c43d78) at /usr/src/debug/php-5.3.3/Zend/zend_alloc.c:826
        rp = <value optimized out>
        cp = <value optimized out>
        prev = 0x2fbac30
        next = 0x2fbac30
#1  0x000000000058b3b5 in _zend_mm_free_int (heap=0x26582b0, p=0x2c43d28) at /usr/src/debug/php-5.3.3/Zend/zend_alloc.c:2019
        mm_block = 0x2c43d18
        next_block = 0x2c43d78
        size = 96
#2  0x00000000005b4b91 in zend_hash_destroy (ht=0x50618b8) at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:531
        p = 0x505ea78
        q = 0x2c43d28
#3  0x00000000005a052a in destroy_zend_class (pce=<value optimized out>) at /usr/src/debug/php-5.3.3/Zend/zend_opcode.c:191
        ce = 0x5061888
#4  0x00000000005b4835 in zend_hash_apply_deleter (ht=0x2658c00, p=0x2d14040) at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:609
        retval = <value optimized out>
#5  0x00000000005b4939 in zend_hash_reverse_apply (ht=0x2658c00, apply_func=0x59b750 <clean_non_persistent_class>)
    at /usr/src/debug/php-5.3.3/Zend/zend_hash.c:758
        result = 1
        p = 0x2d140e0
        q = 0x2d14040
#6  0x000000000059c45e in shutdown_executor () at /usr/src/debug/php-5.3.3/Zend/zend_execute_API.c:312
        __orig_bailout = 0x0
        __bailout = {{__jmpbuf = {9618720, 2173076702337174189, 140736329576223, 0, 0, 140736329576223, -2173227788673480019, 
              2173076671519001261}, __mask_was_saved = 0, __saved_mask = {__val = {47177776, 104, 5813072, 46623608, 140388458062080, 88, 
                5813072, 3328, 5813072, 9620224, 9617240, 9618536, 0, 0, 5928661, 9620224}}}}
#7  0x00000000005a8c22 in zend_deactivate () at /usr/src/debug/php-5.3.3/Zend/zend.c:890
No locals.
#8  0x0000000000556805 in php_request_shutdown (dummy=<value optimized out>) at /usr/src/debug/php-5.3.3/main/main.c:1634
        report_memleaks = 1 '\001'
#9  0x0000000000631214 in main (argc=4, argv=0x7fffbaee4e98) at /usr/src/debug/php-5.3.3/sapi/cli/php_cli.c:1373
        exit_status = 0
        c = <value optimized out>
        file_handle = {type = ZEND_HANDLE_MAPPED, filename = 0x7fffbaee6f1f "/home/menbe/public_html/Grab/index-console.php", 
          opened_path = 0x0, handle = {fd = 42667528, fp = 0x28b0e08, stream = {handle = 0x28b0e08, isatty = 0, mmap = {len = 585, pos = 0, 
                map = 0x7faec7efd000, buf = 0x7faec7efd000 <Address 0x7faec7efd000 out of bounds>, old_handle = 0x28da640, 
                old_closer = 0x5bd500 <zend_stream_stdio_closer>}, reader = 0x5bdb10 <zend_stream_stdio_reader>, 
---Type <return> to continue, or q <return> to quit---
              fsizer = 0x5bd5b0 <zend_stream_stdio_fsizer>, closer = 0x5bdaa0 <zend_stream_mmap_closer>}}, free_filename = 0 '\000'}
        behavior = <value optimized out>
        reflection_what = <value optimized out>
        orig_optind = 1
        orig_optarg = 0x0
        arg_free = <value optimized out>
        arg_excp = <value optimized out>
        script_file = <value optimized out>
        interactive = <value optimized out>
        module_started = 1
        request_started = 1
        lineno = 1
        exec_direct = <value optimized out>
        exec_run = <value optimized out>
        exec_begin = <value optimized out>
        exec_end = <value optimized out>
        param_error = <value optimized out>
        hide_argv = <value optimized out>
        ini_entries_len = <value optimized out>

Пожалуйста, помогите мне в поиске суть проблемы.

2 (15.10.2014 15:00:20 отредактировано shahriyar_r)

далее выяснили:

[root@linuxsrv2 ~]# gdb /usr/bin/php
.
.
(gdb) run /usr/share/nginx/html/Grab/index-console.php Test xxxxxxx
Starting program: /usr/bin/php /usr/share/nginx/html/Grab/index-console.php Test deyerlerorg
[Thread debugging using libthread_db enabled]
zend_mm_heap corrupted

Program exited with code 01.


выключения "garbace collector"-a решил эту проблему:

[PHP]
zend.enable_gc = 0


(gdb) run /usr/share/nginx/html/Grab/index-console.php Test xxxxxx
Starting program: /usr/bin/php /usr/share/nginx/html/Grab/index-console.php Test deyerlerorg
[Thread debugging using libthread_db enabled]

Program exited normally..

это хорошая идея выключить "garbace collector" навсегда?

3

shahriyar_r, http://php.net/manual/ru/features.gc.pe … ations.php

На всякий случай можно отрубить GC только для проблемного скрипта, прописав в нем

ini_set('zend.enable_gc',0);

4

дело в том что у меня стандартные скрипты, меняю только action:

/usr/share/nginx/html/Grab/index-console.php Test Action1
/usr/share/nginx/html/Grab/index-console.php Test Action2
/usr/share/nginx/html/Grab/index-console.php Test Action3

решил отключить глобально. посмотрим как будет работать.

спасибо большое за ответ.