проверьте пожалуйста сегфолт у себя

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мы отловили сегфолт в php 5.6 fpm в такой ситуации:
POST запрос с пустым заголовком Content-Type и без данных
сам скрипт значения не имеет - файл скрипта пустой

$ curl -H 'Content-Type:' -d '' http://site.dev/t.php
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
$ sudo tail /var/log/messages
Mar 3 16:53:30 hotelfm kernel: php-fpm[15374]: segfault at 0 ip 0844e25d sp bfb09f80 error 4 in php-fpm[8048000+ace000]

никаких сторонних расширений нет, почти голый PHP и nginx, могу попробовать убрать nginx и запустить cli web server
# php -m
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
hash
json
libxml
mhash
mysqlnd
pcre
PDO
pdo_sqlite
Phar
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter

[Zend Modules]
# uname -a
Linux 2.6.32-358.6.2.el6.i686 #1 SMP Thu May 16 18:12:13 UTC 2013 i686 i686 i386 GNU/Linux

репорт https://bugs.php.net/bug.php?id=68921
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Код:
$ cat tmp/index.php
<?php exit("OK");

$ php -S 10.211.55.40:8080 -t tmp tmp/index.php
PHP 5.6.6 Development Server started at Tue Mar  3 21:20:26 2015
Listening on http://10.211.55.40:8080
Document root is /home/fixxxer/tmp
Press Ctrl-C to quit.

$ curl -H 'Content-Type:' -d '' http://10.211.55.40:8080/
OK

# cat /etc/nginx/conf.d/default.conf
server {
    listen       80 default_server;
    server_name  site.dev;

    root   /home/fixxxer/tmp;
    location / {
        index  index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

# cat /etc/php5/php-fpm.conf
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log

[fixxxer]
user = fixxxer
group = fixxxer
listen = 127.0.0.1:9000
pm = static
pm.max_children = 20
pm.max_requests = 500

# invoke-rc.d nginx restart
 * Restarting nginx nginx

# invoke-rc.d php5-fpm restart
php5-fpm stop/waiting
php5-fpm start/running, process 19482

$ curl -H 'Content-Type:' -d '' http://10.211.55.40/
OK

$ sudo sh -c 'echo 10.211.55.40 site.dev>> /etc/hosts'
$ curl -H 'Content-Type:' -d '' http://site.dev/
OK

$ php -v
PHP 5.6.6 (cli) (built: Mar  3 2015 04:41:09)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
давай чтоли полный дамп fastcgi обмена.

никакой ереси в php-fpm конфиге нету? типа статсов и прочих пингов и логов?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
нет, fpm стандартный
airgri:log gri$ grep -v \; /usr/local/etc/php-fpm.conf | grep -v '^[[:space:]]*$'
[global]
pid = /usr/local/var/run/php-fpm.pid
error_log = /usr/local/var/log/php-fpm.log
[www]
user = gri
group = nobody
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
но я смог воспроизвести на OS X nginx+php-fpm

конфиг nginx непростой, но не пофиг ли, из нестандартного только
fastcgi_param SERVER_NAME $host; вместо $server_name

забыл, чем ты там советовал fastcgi дампить?
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Да фиг знает, что считать стандартным, в каждом дистрибутиве по-своему. :)

А всегда с первого раза или подолбиться надо? Вообще где то heap corruption явно, судя по bt, имеет смысл отрубить вообще все ext-ы, какие отрубабельны, оставить один воркер в foreground, и сделать так https://bugs.php.net/bugs-getting-valgrind-log.php

забыл, чем ты там советовал fastcgi дампить?
socat-ом сойдет, только результат лучше в base64 какойнить
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
у меня ручками, стандратный - это из исходников с php.net, дописал его
щас посмотрю socat

всегда с первого раза
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
сегфолт связан с установкой always_populate_raw_post_data = on или 0, по дефолту,
а если поставить = -1 -- сегфолта нет
причем, установка always_populate_raw_post_data = off, как предлагается в php.ini, не помогает

я дописал детали в https://bugs.php.net/bug.php?id=68921
 
Последнее редактирование:

Активист

Активист
Команда форума
Что у тебя за CURL такой, который пустой Header посылает?))

Код:
root@keeper:/home/keeper# curl -H 'Content-Type:' -d '' http://localhost:81/phpinfo.php  --trace-ascii  /dev/stdout
== Info: Hostname was NOT found in DNS cache
== Info:   Trying ::1...
== Info: Connected to localhost (::1) port 81 (#0)
=> Send header, 107 bytes (0x6b)
0000: POST /phpinfo.php HTTP/1.1
001c: User-Agent: curl/7.38.0
0035: Host: localhost:81
0049: Accept: */*
0056: Content-Length: 0
0069:
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
== Info: Server nginx/1.6.2 is not blacklisted
<= Recv header, 21 bytes (0x15)
0000: Server: nginx/1.6.2
<= Recv header, 37 bytes (0x25)
0000: Date: Wed, 04 Mar 2015 00:34:01 GMT
<= Recv header, 40 bytes (0x28)
0000: Content-Type: text/html; charset=UTF-8
<= Recv header, 28 bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 24 bytes (0x18)
0000: Connection: keep-alive
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 13 bytes (0xd)
0000: 3
0003: ok.
0008: 0
000b:
ok
== Info: Connection #0 to host localhost left intact
Хотя в независимости от этого, мне не удалось ошибку эту повторить.

Код:
root@keeper:/home/keeper# telnet localhost 81
Trying ::1...
Connected to localhost.
Escape character is '^]'.
POST /phpinfo.php HTTP/1.1
User-Agent: curl/7.38.0
Host: localhost:81
Accept: */*
Content-Type:
Content-Length: 0

HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Wed, 04 Mar 2015 00:39:04 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive

3
ok

0
PHP собран мейнтейнерами Debian Sid
Код:
root@keeper:/home/keeper# dpkg -l | grep php
ii  libapache2-mod-php5                   5.6.6+dfsg-2                        amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libphp-phpmailer                      5.2.9+dfsg-2                        all          full featured email transfer class for PHP
ii  php-getid3                            1.9.8-3                             all          scripts to extract information from multimedia files
ii  php-gettext                           1.0.11-1                            all          read gettext MO files directly, without requiring anything other than PHP
ii  php-tcpdf                             6.0.093+dfsg-1                      all          PHP class for generating PDF files on-the-fly
ii  php5-cgi                              5.6.6+dfsg-2                        amd64        server-side, HTML-embedded scripting language (CGI binary)
ii  php5-cli                              5.6.6+dfsg-2                        amd64        command-line interpreter for the php5 scripting language
ii  php5-common                           5.6.6+dfsg-2                        amd64        Common files for packages built from the php5 source
ii  php5-curl                             5.6.6+dfsg-2                        amd64        CURL module for php5
ii  php5-fpm                              5.6.6+dfsg-2                        amd64        server-side, HTML-embedded scripting language (FPM-CGI binary)
ii  php5-gd                               5.6.6+dfsg-2                        amd64        GD module for php5
ii  php5-imagick                          3.2.0~rc1-1                         amd64        Provides a wrapper to the ImageMagick library
ii  php5-json                             1.3.6-1                             amd64        JSON module for php5
ii  php5-mcrypt                           5.6.6+dfsg-2                        amd64        MCrypt module for php5
ii  php5-mysqlnd                          5.6.6+dfsg-2                        amd64        MySQL module for php5 (Native Driver)
ii  php5-readline                         5.6.6+dfsg-2                        amd64        Readline module for php5
ii  php5-xdebug                           2.2.6-1                             amd64        Xdebug Module for PHP 5
ii  phpmyadmin                            4:4.2.12-2                          all          MySQL web administration tool
Конфиги стандартные (которые предоставили мейнтенеры пакетов Debian Sid), расскоментировал только в /etc/nginx/sites-enabled/default секцию с PHP
 

hell0w0rd

Продвинутый новичок
grigori, чего ты людей мучаешь. Напиши vagrantfile, в котором будет воспроизводиться баг
 
Сверху