*** glibc detected ***

Igor Sysoev is at rambler-co.ru
Thu Jan 29 17:36:53 MSK 2009


On Thu, Jan 29, 2009 at 04:09:28PM +0600, Artem Bokhan wrote:

> Igor Sysoev пишет:
> >On Wed, Jan 28, 2009 at 10:08:55PM +0600, Artem Bokhan wrote:

> >>2009/01/28 20:33:51 [error] 15446#0: *1435 delta-motors.cris.net could 
> >>not be resolved (3: Host not found) while in resolving client hostname, 
> >>client: 212.110.138.16, server: 0.0.0.0:33333
> >>2009/01/28 20:33:51 [error] 15446#0: *1437 sr-194-33-140-118-on-nets.com 
> >>could not be resolved (3: Host not found) while in resolving client 
> >>hostname, client: 118.140.33.194, server: 0.0.0.0:33333
> >>2009/01/28 20:33:51 [error] 15446#0: *1444 92.84.40.233 could not be 
> >>resolved (3: Host not found) while in resolving client address, client: 
> >>92.84.40.233, server: 0.0.0.0:33333
> >>2009/01/28 20:33:51 [error] 15446#0: *1446 
> >>ABTS-North-Dynamic-179.81.161.122.airtelbroadband.in could not be 
> >>resolved (3: Host not found) while in resolving
> >>client hostname, client: 122.161.81.179, server: 0.0.0.0:33333
> >>2009/01/28 20:33:51 [error] 15446#0: *1432 58.187.117.32 could not be 
> >>resolved (3: Host not found) while in resolving client address, client: 
> >>58.187.117.32,
> >>server: 0.0.0.0:33333
> >>2009/01/28 20:33:52 [error] 15446#0: *1451 89.113.142.101 could not be 
> >>resolved (3: Host not found) while in resolving client address, client: 
> >>89.113.142.101, server: 0.0.0.0:33333
> >>2009/01/28 20:33:52 [error] 15446#0: *1455 190.144.22.254 could not be 
> >>resolved (3: Host not found) while in resolving client address, client: 
> >>190.144.22.254, server: 0.0.0.0:33333
> >>*** glibc detected *** free(): invalid pointer: 0x0000000000564c58 ***
> >>2009/01/28 20:33:52 [alert] 13643#0: worker process 15446 exited on 
> >>signal 6
> >>    
> >
> >Хорошо бы разрешить корки и прислать мне backtrace из gdb.
> >  
> Ушло в личный ящик.

Патч.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/core/ngx_resolver.c
===================================================================
--- src/core/ngx_resolver.c	(revision 1801)
+++ src/core/ngx_resolver.c	(revision 1804)
@@ -578,6 +578,7 @@
 ngx_int_t
 ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
 {
+    u_char               *name;
     ngx_resolver_t       *r;
     ngx_resolver_node_t  *rn;
 
@@ -601,19 +602,21 @@
 
             ngx_queue_insert_head(&r->addr_expire_queue, &rn->queue);
 
-            ctx->name.len = rn->nlen;
-            ctx->name.data = ngx_resolver_dup(r, rn->name, rn->nlen);
-            if (ctx->name.data == NULL) {
+            name = ngx_resolver_dup(r, rn->name, rn->nlen);
+            if (name == NULL) {
                 goto failed;
             }
 
+            ctx->name.len = rn->nlen;
+            ctx->name.data = name;
+
             /* unlock addr mutex */
 
             ctx->state = NGX_OK;
 
             ctx->handler(ctx);
 
-            ngx_resolver_free(r, ctx->name.data);
+            ngx_resolver_free(r, name);
 
             return NGX_OK;
         }
@@ -1336,7 +1339,7 @@
              ctx->handler(ctx);
         }
 
-        if (naddrs) {
+        if (naddrs > 1) {
             ngx_resolver_free(r, addrs);
         }
 
@@ -1523,7 +1526,11 @@
 
     if (len != (size_t) rn->nlen || ngx_strncmp(name.data, rn->name, len) != 0)
     {
-        ngx_resolver_free(r, rn->name);
+        if (rn->nlen) {
+            ngx_resolver_free(r, rn->name);
+        }
+
+        rn->nlen = len;
         rn->name = name.data;
 
         name.data = ngx_resolver_dup(r, rn->name, len);


More information about the nginx-ru mailing list