Worker dies with a segfault error

greekduke nginx-forum at nginx.us
Tue Mar 4 14:33:56 UTC 2014


Hello 

Finally I managed to get a core dump and below is the output:

[root at ape-01 nginx]# gdb /usr/local/nginx/sbin/nginx
/var/log/nginx/core.31000 
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/nginx/sbin/nginx...done.
[New Thread 31000]
Missing separate debuginfo for /usr/local/pgsql/lib/libpq.so.5
Try: yum --disablerepo='*' --enablerepo='*-debug*' install
/usr/lib/debug/.build-id/50/df7babee4e7e51a305aed74590ad3d040c5ffb
Missing separate debuginfo for 
Try: yum --disablerepo='*' --enablerepo='*-debug*' install
/usr/lib/debug/.build-id/81/a81be2e44c93640adedb62adc93a47f4a09dd1
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols
found)...done.
[Thread debugging using libthread_db enabled]
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /usr/local/pgsql/lib/libpq.so.5...(no debugging symbols
found)...done.
Loaded symbols for /usr/local/pgsql/lib/libpq.so.5
Reading symbols from /lib64/libpcre.so.0...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libpcre.so.0
Reading symbols from /usr/lib64/libcrypto.so.10...(no debugging symbols
found)...done.
Loaded symbols for /usr/lib64/libcrypto.so.10
Reading symbols from /lib64/libz.so.1...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libc.so.6...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols
found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libfreebl3.so...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libfreebl3.so
Reading symbols from /lib64/libdl.so.2...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols
found)...done.
Loaded symbols for /lib64/libnss_files.so.2
Core was generated by `nginx: worker process                                
         '.
Program terminated with signal 11, Segmentation fault.
#0  ngx_pnalloc (pool=0x0, size=950) at src/core/ngx_palloc.c:155
155         if (size <= pool->max) {
Missing separate debuginfos, use: debuginfo-install
glibc-2.12-1.132.el6.x86_64 nss-softokn-freebl-3.14.3-9.el6.x86_64
openssl-1.0.1e-15.el6.x86_64 pcre-7.8-6.el6.x86_64 zlib-1.2.3-29.el6.x86_64
(gdb) 




################################## nginx.conf
###############################################

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;


events {
        use epoll;
        worker_connections  20480;
}
worker_rlimit_nofile    30000;

worker_rlimit_core  500M;
working_directory /var/log/nginx;


http {
        include       /usr/local/nginx/conf/mime.types;
        default_type  application/octet-stream;

        log_format  main  '$remote_addr - $remote_user [$time_local]
"$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';
        log_format  cdr  '$remote_addr - $remote_user [$time_local]
"$request" '
          '$status $body_bytes_sent "$http_referer" '
          '"$http_user_agent" "$http_x_forwarded_for" "$msisdn" "$apn"';

        log_format  body $request_body;
        access_log  /var/log/nginx/body.log body;

        access_log  /var/log/nginx/access.log  main;

        client_header_buffer_size 32k; 
        large_client_header_buffers 4 32k; 
        client_max_body_size 300m; 
        sendfile on; 
        tcp_nopush     on; 
        keepalive_timeout 60; 
        tcp_nodelay on;

        #keepalive_timeout  65;
        client_body_in_file_only off;
        #client_body_in_single_buffer on; 
        client_body_timeout 5s;

        #gzip  on;


        upstream db {
                postgres_server 10.9.115.6:9999 dbname=nodeb  user=nodeb
password=banana;
        }

        server {
                listen       8000;

                location / {
                        #flv;
                        #mp4;
                        #mp4_buffer_size     4M;
                        #mp4_max_buffer_size 10M;
                        resolver 127.0.0.1;
                        eval_subrequest_in_memory  off;
                        set $test "";
                        set $apn "";
                        set $msisdn "";
                        set $ms "";
                        set $mmcurl 192.168.200.95;

                        eval $result {
                                postgres_pass     db;
                                postgres_query "select cast(count(url) as
varchar),'0' from urls where url like '%$http_host%' union select
calledstationid,callingstationid from mappings where
framedipaddress='$http_x_forwarded_for'";
                                postgres_output   text;
                        }

                        # Get APN and MSISND from the result of the query 
                        #if ($result ~ ([^,]*)){
                        if ($result ~ ([^,]+),([^,]+),([^,]+),([^,]+) ){
                                set $urlfound $1;
                                set $apn $3;
                                set $msisdn $4;
                        }

                        # Check is $msisdn is null
                        if ($msisdn = ""){
                                return   403;
                        }
                        # Check APN and destination host
                        if ($apn = test.wap){
                                set $test testwap;
                        }
                        if ($apn = oper-mms){
                                set $test testmms;
                        }
                        if ($apn = mms.domain.com){
                                set $test operMms;
                        }
                        if ($apn = wap.domain.com){
                                set $test operWap;
                        }
                        if ($http_host = $mmcurl){
                                set $test "${test}Mmsc";
                        } 
                        if ($http_host != $mmcurl){
                                set $test "${test}Browsing";
                        } 
                        if ($urlfound ){
                                set $test "${test}1";
                        } 

                        if ($test = operMmsBrowsing) {
                                return   403;
                                break;
                        }
                        if ($test = operWapMmsc) {
                                return   403;
                                break;
                        }
                        if ($test = testwapMmsc) {
                                return   403;
                                break;
                        }
                        if ($test = testmmsBrowsing) {
                                return   403;
                                break;
                        }
                        if ($test = operMmsMmsc) {
                                set $ms $msisdn;
                        }
                        if ($test = operMmsMmsc) {
                                set $ms $msisdn;
                        }
                        if ($test = operMmsBrowsing1) {
                                set $ms $msisdn;
                        }
                        if ($test = testwapBrowsing1) {
                                set $ms $msisdn;
                        }
                        if ($test = testmmsMmsc) {
                                set $ms $msisdn;
                        }

                        access_log  /var/log/nginx/cdr.log  cdr;
                        error_log   /var/log/nginx/debug.log debug;
                        proxy_set_header   Host             $host;

                        proxy_set_header   "X-Nokia-msisdn" $ms;
                        proxy_pass http://$http_host$uri$is_args$args;
                }

                error_page   500 502 503 504  /50x.html;
                error_page   403  /403.html;

                location = /403.html {
                        root   html;
                        allow all;
                }

                location = /50x.html {
                        root   html;
                        allow all;
                }

                location = /testingpage.html {
                        root   html;
                        access_log  /var/log/nginx/lbprobe.log  main;
                }
        }

}

#########################################################################################

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,247886,248074#msg-248074



More information about the nginx mailing list