[Varnish] #558: PIPE assert

Varnish varnish-bugs at projects.linpro.no
Thu Sep 24 15:53:23 CEST 2009


#558: PIPE assert
----------------------+-----------------------------------------------------
 Reporter:  kolo      |       Owner:  phk        
     Type:  defect    |      Status:  new        
 Priority:  high      |   Milestone:             
Component:  varnishd  |     Version:  2.0        
 Severity:  critical  |    Keywords:  pipe assert
----------------------+-----------------------------------------------------
 On high load we are geting asserts (and varnish restarts) like this:

 {{{
  Child (29050) Panic message: Assert error in Tcheck(), cache.h line
 648:#012  Condition((t.e) != 0) not true.  thread = (cache-worker)sp =
 0x7f71331f7008 {#012  fd = 232, id = 232, xid = 137189936,#012  client =
 212.20.66.167:2494,#012  step = STP_PIPE,#012  handling = pipe,#012
 err_code = 400, err_reason = (null),#012  ws = 0x7f71331f7078 { #012    id
 = "sess",#012    {s,f,r,e} = {0x7f71331f7808,,+682,(nil),+16384},#012
 },#012    worker = 0x7f711fd17be0 {#012    },#012    vcl = {#012
 srcname = {#012        "input",#012        "Default",#012      },#012
 },#012},#012
 }}}

 when I redefine vcl like this:
 {{{
  sub vcl_recv
      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 (pass);
      }
 }}}

 I get this assert:

 {{{
  Child (27265) Panic message: Assert error in Tcheck(), cache.h line
 648:#012  Condition((t.e) != 0) not true.  thread = (cache-worker)sp =
 0x7f3c2277f008 {#012  fd = 850, id = 850, xid = 351167563,#012  client =
 83.21.131.63:1277,#012  step = STP_PASS,#012  handling = pass,#012
 err_code = 400, err_reason = (null),#012  ws = 0x7f3c2277f078 { #012    id
 = "sess",#012    {s,f,r,e} = {0x7f3c2277f808,,+601,(nil),+16384},#012
 },#012    worker = 0x7f3c33becbe0 {#012    },#012    vcl = {#012
 srcname = {#012        "input",#012        "Default",#012      },#012
 },#012},#012
 }}}

 and this way:
  {{{
 sub vcl_recv
      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);
      }
 }}}

 I get:

 {{{
  Child (21508) Panic message: Assert error in http_StatusMessage(),
 cache_http.c line 111:#012  Condition(status >= 100 && status <= 999) not
 true.  thread = (cache-worker)sp = 0x7f713476b008 {#012  fd = 127, id =
 127, xid = 77180678,#012  client = 94.246.126.177:34647,#012  step =
 STP_ERROR,#012  handling = error,#012  ws = 0x7f713476b078 { #012    id =
 "sess",#012    {s,f,r,e} = {0x7f713476b808,,+903,(nil),+16384},#012
 },#012    worker = 0x7f7123846be0 {#012    },#012    vcl = {#012
 srcname = {#012        "input",#012        "Default",#012      },#012
 },#012  obj = 0x7f780f7b7000 {#012    refcnt = 1, xid = 77180678,#012
 ws = 0x7f780f7b7028 { #012      id = "obj",#012      {s,f,r,e} =
 {0x7f780f7b7358,,+78,(nil),+7336},#012    },#012    http = {#012      ws =
 0x7f780f7b7028 { #012        id = "obj",#012        {s,f,r,e} =
 {0x7f780f7b7358,,+78,(nil),+7336},#012      },#012      hd = {#012
 "Date: Tue, 22 Sep 2009 14:07:04 GMT",#012        "Server: Varnish",#012
 "Retry-After: 0",#012      },#012    },#012    len = 0,#012    store =
 {#012    },#012  },#012},#012
 }}}


 runing 2.0.4
 64bit debian lenny; vanila 2.6.31; 31GB RAM (only few hundreds used)

 happens unpredictable seldom but on high load it makes  trouble; on
 default vcl we are geting only tens of pipe request per tens of million
 other req.

 When we were using PIPE like solution for IE6 keepalive bug

 ( http://projects.linpro.no/pipermail/varnish-
 misc/2009-September/003075.html)

 asserts were frequent.

-- 
Ticket URL: <http://varnish.projects.linpro.no/ticket/558>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator


More information about the varnish-bugs mailing list