PIPE asserts

Václav Bílek v.bilek at 1art.cz
Tue Sep 22 15:50:45 CEST 2009


i redefined vcl_recv this way:

    if (req.request != "GET" &&
      req.request != "HEAD" &&
      req.request != "PUT" &&
      req.request != "POST" &&
      req.request != "TRACE" &&
      req.request != "OPTIONS" &&
      req.request != "DELETE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        return (error);
    }

and get assert like this:

varnishd[7432]: Child (26652) Panic message: Assert error in
http_StatusMessage(), cache_http.c line 111:#012  Condition(status >=
100 && status <= 999) not true.  errno = 104 (Connection reset by peer)
 thread = (cache-worker)sp = 0x7f71469a7008 {#012  fd = 393, id = 393,
xid = 1393611480,#012  client = 94.246.126.148:35576,#012  step =
STP_ERROR,#012  handling = error,#012  ws = 0x7f71469a7078 { #012    id
= "sess",#012    {s,f,r,e} = {0x7f71469a7808,,+460,(nil),+16384},#012
},#012    worker = 0x7f710977bbe0 {#012    },#012    vcl = {#012
srcname = {#012        "input",#012        "Default",#012      },#012
 },#012  obj = 0x7f780f4b1000 {#012    refcnt = 1, xid = 1393611480,#012
   ws = 0x7f780f4b1028 { #012      id = "obj",#012      {s,f,r,e} =
{0x7f780f4b1358,,+78,(nil),+7336},#012    },#012    http = {#012      ws
= 0x7f780f4b1028 { #012        id = "obj",#012        {s,f,r,e} =
{0x7f780f4b1358,,+78,(nil),+7336},#012      },#012      hd = {#012
  "Date: Tue, 22 Sep 2009 13:06:36 GMT",#012        "Server:
Varnish",#012        "Retry-After: 0",#012      },#012    },#012    len
= 0,#012    store = {#012    },#012  },#012},#012


is there any way how to block such bad request?



Václav Bílek napsal(a):
> Hello
> 
> On high load we are geting asserts (and varnish restarts) like this:
> 
> varnishd[23515]: Child (7569) Panic message: Assert error in Tcheck(),
> cache.h line 648:#012  Condition((t.e) != 0) not true.  thread =
> (cache-worker)sp = 0x7f76c5875008 {#012  fd = 611, id = 611, xid =
> 778413112,#012  client = 62.141.2.8:56778,#012  step = STP_PIPE,#012
> handling = pipe,#012  err_code = 400, err_reason = (null),#012  ws =
> 0x7f76c5875078 { #012    id = "sess",#012    {s,f,r,e} =
> {0x7f76c5875808,,+40,(nil),+16384},#012  },#012    worker =
> 0x7f7694353be0 {#012    },#012    vcl = {#012      srcname = {#012
>   "input",#012        "Default",#012      },#012    },#012},#012
> 
> We do not PIPE anything explicitly ... after a day of run we have tens
> of passes in hundreds millions of requests.
> Is there any way how to absolutely disable piping of requests?
> What kind of requests is piped?
> 
> Is there anything I can do for debuging this?
> 
> Vaclav Bilek
> 
> 
> _______________________________________________
> varnish-misc mailing list
> varnish-misc at projects.linpro.no
> http://projects.linpro.no/mailman/listinfo/varnish-misc



More information about the varnish-misc mailing list