ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: signal 11, FreeBSD 6.1



On Fri, Feb 09, 2007 at 03:31:55PM +0600, zevvs@xxxxxx wrote:
> Добрый день. nginx постоянно падает (раз в 1-2 минуты) с 11 сигналом.
> Вывод дебагера:

> #0  0x08082a6e in ngx_http_fastcgi_script_name_variable (r=0x80a9000, 
> v=0x80b6288, data=0)
>     at src/http/modules/ngx_http_fastcgi_module.c:1978
> 1978        if (r->uri.data[r->uri.len - 1] != '/') {
> (gdb) bt

Патч


-- 
Игорь Сысоев
http://sysoev.ru
Index: src/http/modules/ngx_http_fastcgi_module.c
===================================================================
--- src/http/modules/ngx_http_fastcgi_module.c  (revision 416)
+++ src/http/modules/ngx_http_fastcgi_module.c  (working copy)
@@ -1969,28 +1969,39 @@
     u_char                       *p;
     ngx_http_fastcgi_loc_conf_t  *flcf;
 
-    v->valid = 1;
-    v->no_cachable = 0;
-    v->not_found = 0;
+    if (r->uri.len) {
+        v->valid = 1;
+        v->no_cachable = 0;
+        v->not_found = 0;
 
-    flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
+        flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
 
-    if (r->uri.data[r->uri.len - 1] != '/') {
-        v->len = r->uri.len;
-        v->data = r->uri.data;
-        return NGX_OK;
-    }
+        if (r->uri.data[r->uri.len - 1] != '/') {
+            v->len = r->uri.len;
+            v->data = r->uri.data;
+            return NGX_OK;
+        }
 
-    v->len = r->uri.len + flcf->index.len;
+        v->len = r->uri.len + flcf->index.len;
 
-    v->data = ngx_palloc(r->pool, v->len);
-    if (v->data == NULL) {
-        return NGX_ERROR;
+        v->data = ngx_palloc(r->pool, v->len);
+        if (v->data == NULL) {
+            return NGX_ERROR;
+        }
+
+        p = ngx_copy(v->data, r->uri.data, r->uri.len);
+        ngx_memcpy(p, flcf->index.data, flcf->index.len);
+
+    } else {
+        v->len = 0;
+        v->valid = 1;
+        v->no_cachable = 0;
+        v->not_found = 0;
+        v->data = NULL;
+
+        return NGX_OK;
     }
 
-    p = ngx_copy(v->data, r->uri.data, r->uri.len);
-    ngx_memcpy(p, flcf->index.data, flcf->index.len);
-
     return NGX_OK;
 }
 


 




Copyright © Lexa Software, 1996-2009.