Re: Корка выпала

Maxim Dounin mdounin на mdounin.ru
Сб Апр 21 23:06:42 UTC 2012


Hello!

On Sun, Apr 22, 2012 at 12:17:36AM +0400, Михаил Монашёв wrote:

> Здравствуйте.
> 
> в error-логе:
> 2012/04/21 19:52:31 [alert] 27366#0: worker process 27402 exited on signal 11 (core dumped)
> 
> FreeBSD 8.2-RELEASE-p3
> 
> /usr/local/sbin/nginx -V
> nginx version: nginx/1.1.18
> configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-debug --with-file-aio --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_image_filter_module --with-http_stub_status_module --with-pcre

[...]

> #0  0x0000000000497612 in ngx_http_proxy_parse_chunked (r=0x801627900, buf=0x8019d73c8) at src/http/modules/ngx_http_proxy_module.c:1639
> 1639    src/http/modules/ngx_http_proxy_module.c: No such file or directory.
>         in src/http/modules/ngx_http_proxy_module.c

[...]

> Конфиг вышлю, но не в лист. Сейчас nginx до сих пор падает, проработав
> до  того  пару  недель.  Перезапускать его или пока оставить в падучем
> состоянии?

В конфиге, я так понимаю, image filter во всю используется, и 
ошибки от него error_page'ем куда-то обрабатываются?  Если есть 
ещё какие-то нюансы - шли.

Патч наверное какой-то такой:

--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1497,6 +1497,10 @@ ngx_http_proxy_input_filter_init(void *d
     u = r->upstream;
     ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module);
 
+    if (ctx == NULL) {
+        return NGX_ERROR;
+    }
+
     ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                    "http proxy filter init s:%d h:%d c:%d l:%O",
                    u->headers_in.status_n, ctx->head, u->headers_in.chunked,
@@ -1636,6 +1640,11 @@ ngx_http_proxy_parse_chunked(ngx_http_re
     } state;
 
     ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module);
+
+    if (ctx == NULL) {
+        return NGX_ERROR;
+    }
+
     state = ctx->state;
 
     if (state == sw_chunk_data && ctx->size == 0) {
@@ -1883,6 +1892,10 @@ ngx_http_proxy_chunked_filter(ngx_event_
     r = p->input_ctx;
     ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module);
 
+    if (ctx == NULL) {
+        return NGX_ERROR;
+    }
+
     b = NULL;
     prev = &buf->shadow;
 
@@ -2064,6 +2077,11 @@ ngx_http_proxy_non_buffered_chunked_filt
     ngx_http_proxy_ctx_t  *ctx;
 
     ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module);
+
+    if (ctx == NULL) {
+        return NGX_ERROR;
+    }
+
     u = r->upstream;
     buf = &u->buffer;
 

Maxim Dounin



Подробная информация о списке рассылки nginx-ru