LINUX.ORG.RU
ФорумAdmin

нахождение виновника в segmentation fault httpd

 ,


0

1

Доброго дня коллеги! Есть проблема с крашем httpd по segmentation fault на centos 5.8.

Linux test 2.6.18-308.1.1.el5PAE #1 SMP Wed Mar 7 04:57:46 EST 2012 i686 athlon i386 GNU/Linux
# httpd -V
Server version: Apache/2.2.3
Server built:   Feb 23 2012 21:16:57
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.3.9
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
# ldd /usr/sbin/httpd
        linux-gate.so.1 =>  (0x00f86000)
        libm.so.6 => /lib/libm.so.6 (0x00268000)
        libpcre.so.0 => /lib/libpcre.so.0 (0x00654000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00549000)
        libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x002ad000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00d69000)
        libldap-2.3.so.0 => /usr/lib/libldap-2.3.so.0 (0x00110000)
        liblber-2.3.so.0 => /usr/lib/liblber-2.3.so.0 (0x00c1f000)
        libdb-4.3.so => /lib/libdb-4.3.so (0x00900000)
        libexpat.so.0 => /lib/libexpat.so.0 (0x003cb000)
        libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0x00a4f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00703000)
        libdl.so.2 => /lib/libdl.so.2 (0x0014a000)
        libc.so.6 => /lib/libc.so.6 (0x003ec000)
        /lib/ld-linux.so.2 (0x0032a000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00a92000)
        libuuid.so.1 => /lib/libuuid.so.1 (0x0014f000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x001bc000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00154000)
        libssl.so.6 => /lib/libssl.so.6 (0x0016d000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x0071d000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x001d1000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00561000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x003b8000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x001ff000)
        libz.so.1 => /lib/libz.so.1 (0x00226000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00239000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00da8000)
glibc-2.5-81.el5_8.1

Трейс:

Core was generated by `/usr/sbin/httpd'.
Program terminated with signal 11, Segmentation fault.
#0  0x00e5d5d7 in strstr (phaystack=0x0, pneedle=0x6694ba "text/html") at strstr.c:60
60                if (!(a = *++haystack))
(gdb) bt full
#0  0x00e5d5d7 in strstr (phaystack=0x0, pneedle=0x6694ba "text/html") at strstr.c:60
        c = <value optimized out>
        haystack = <value optimized out>
        needle = <value optimized out>
        b = 116
#1  0x0066894f in dl_out_filter (f=0x9907ee0, pbbIn=0x9908078) at mod_config_log.c:1057
        r = 0x99068e8
        c = 0x98fe758
        pbktIn = <value optimized out>
        pbbOut = <value optimized out>
        data = <value optimized out>
        len = <value optimized out>
        addlen = <value optimized out>
        pbktOut = <value optimized out>
#2  0x006055b0 in ap_pass_brigade (next=0x99068e8, bb=0x9908078) at /usr/src/debug/httpd-2.2.3/server/util_filter.c:526
        e = 0x0
#3  0x005ec579 in end_output_stream (r=0x99068e8) at /usr/src/debug/httpd-2.2.3/server/protocol.c:1136
        c = 0x98fe758
        bb = 0x9908078
        b = <value optimized out>
#4  0x00609888 in ap_process_request (r=0x99068e8) at /usr/src/debug/httpd-2.2.3/modules/http/http_request.c:268
        access_status = 116
#5  0x0060677f in ap_process_http_connection (c=0x98fe758) at /usr/src/debug/httpd-2.2.3/modules/http/http_core.c:184
        r = 0x99068e8
        csd = 0x0
#6  0x00601d9d in ap_run_process_connection (c=0x98fe758) at /usr/src/debug/httpd-2.2.3/server/connection.c:43
        n = 0
        rv = <value optimized out>
#7  0x00601e9c in ap_process_connection (c=0x98fe758, csd=0x98fe5c0) at /usr/src/debug/httpd-2.2.3/server/connection.c:190
        rc = 116
#8  0x0060ea24 in child_main (child_num_arg=<value optimized out>) at /usr/src/debug/httpd-2.2.3/server/mpm/prefork/prefork.c:645
        current_conn = 0x98fe758
        csd = 0x98fe5c0
        ptrans = 0x98fe580
        allocator = 0x98fc4f0
        status = <value optimized out>
        i = 1
        lr = <value optimized out>
        pollset = 0x98fc610
        sbh = 0x98fc608
        bucket_alloc = 0x9902898
        last_poll_idx = 0
#9  0x0060ed31 in make_child (s=0x96784a8, slot=18) at /usr/src/debug/httpd-2.2.3/server/mpm/prefork/prefork.c:741
        pid = 0
#10 0x0060f733 in ap_mpm_run (_pconf=0x9676600, plog=0x96a46b8, s=0x96784a8) at /usr/src/debug/httpd-2.2.3/server/mpm/prefork/prefork.c:876
---Type <return> to continue, or q <return> to quit---
        status = 0
        pid = {pid = -1, in = 0x96a46b8, out = 0x9670798, err = 0x2}
        child_slot = <value optimized out>
        exitwhy = 0
        processed_status = <value optimized out>
        index = <value optimized out>
        remaining_children_to_start = 0
        rv = <value optimized out>
#11 0x005e5277 in main (argc=157763200, argv=0x97044d0) at /usr/src/debug/httpd-2.2.3/server/main.c:737
        c = 0 '\000'
        configtestonly = 0
        confname = 0x611c00 "conf/httpd.conf"
        def_server_root = 0x611c10 "/etc/httpd"
        temp_error_log = 0x0
        error = <value optimized out>
        process = 0x9674680
        server_conf = <value optimized out>
        pglobal = 0x96745f8
        pconf = 0x9676600
        plog = 0x96a46b8
        ptemp = 0x96a86c8
        pcommands = 0x9678608
        opt = 0x96786a8
        rv = 0
        optarg = 0xb7fb32a0 ""
glibc пробовал и i386 и i686. Верно ли я понимаю, что проблема в нем? Что можно попробовать сделать, оставаясь на Centos 5.8?


glibc пробовал и i386 и i686. Верно ли я понимаю, что проблема в нем?

вряд ли, тут получилось так, что в ap_filter_t::request_rec::content_type лежит 0, из-за чего все и упало, чтоб понять почему - нужно брать исходный код и смотреть вверх по стеку, сверяясь со значениями в переменных

vaino ()

он постоянно крашится, или периодически крашится? в 99% случаев сегфолтов апача виноват mod_php и собственно пыхпых. из опыта.

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
filter
ftp
gd
gettext
gmp
hash
iconv
json
libxml
mbstring
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib
PHP 5.3.3 (cli) (built: Feb 22 2012 19:37:49) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

пых есть, но всё лишние отключено уже, а то, что не отключено необходимо для работы сайтов, а не будут работать сайты, не будут и сегфолты идти.

zenter ()
Ответ на: комментарий от zenter

не будут работать определенные функции у сайтов, что поможет локализовать проблему, которая на 99% в каком-то из модулей пыхпыха, собери сам пых с debug, возможно это поможет.

Komintern ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.