[Varnish] #994: Assert error in http_GetHdr(), cache_http.c

Varnish varnish-bugs at varnish-cache.org
Tue Aug 30 09:28:08 CEST 2011


#994: Assert error in http_GetHdr(), cache_http.c
---------------------+------------------------------------------------------
 Reporter:  pmialon  |        Type:  defect  
   Status:  new      |    Priority:  normal  
Milestone:           |   Component:  varnishd
  Version:  trunk    |    Severity:  blocker 
 Keywords:           |  
---------------------+------------------------------------------------------

Old description:

> From Git af353a6b6a45e2a47e17aa84389950a1c65854ec
>
> With the debian package varnish 3.0.0 this bug didn't appear, it seems
> that this is a regression.
>
> This bugs is hit frequently, on our servers varnish never reaches one
> hour of uptime.
>
> {{{
> Aug 29 14:24:34 cloud3 varnishd[3495]: Child (19452) Panic message:
> Assert error in http_GetHdr(), cache_http.c line 266:
>   Condition(l == strlen(hdr + 1)) not true.
> thread = (cache-worker)
> ident = Linux,2.6.32-5-amd64,x86_64,-sfile,-smalloc,-hcritbit,epoll
> Backtrace:
>   0x42e4c8: /usr/sbin/varnishd() [0x42e4c8]
>   0x429c08: /usr/sbin/varnishd(http_GetHdr+0x68) [0x429c08]
>   0x433c47: /usr/sbin/varnishd(VRY_Match+0xf7) [0x433c47]
>   0x427e86: /usr/sbin/varnishd(HSH_Lookup+0x2a6) [0x427e86]
>   0x415a3b: /usr/sbin/varnishd() [0x415a3b]
>   0x418fc5: /usr/sbin/varnishd(CNT_Session+0x675) [0x418fc5]
>   0x430c78: /usr/sbin/varnishd() [0x430c78]
>   0x42fe49: /usr/sbin/varnishd() [0x42fe49]
>   0x7ffff6ab48ba: /lib/libpthread.so.0(+0x68ba) [0x7ffff6ab48ba]
>   0x7ffff681c02d: /lib/libc.so.6(clone+0x6d) [0x7ffff681c02d]
> sp = 0x7ec790b21008 {
>   fd = 53, id = 53, xid = 2071385764,
>   client = 127.0.0.1 11364,
>   step = STP_LOOKUP,
>   handling = hash,
>   restarts = 0, esi_level = 0
>   flags =
>   bodystatus = 4
>   ws = 0x7ec790b21080 {
>     id = "sess",
>     {s,f,r,e} = {0x7ec790b21cc8,+3344,+65536,+65536},
>   },
>   http[req] = {
>     ws = 0x7ec790b21080[sess]
>       "GET",
> "/searchkw/xml/?_q%5B0%5D=%28suzuki%7Bw%3D1%7D+115%7Bw%3D1%7D%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D4&_q%5B1%5D=%28suzuki%7Bw%3D1%7D%29+OPT%28115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B2%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B3%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AES+%28category%3Amiscellaneous%29+querywords%3E%3D2&_vn%5B0%5D=defaultkw_new&_vn%5B1%5D=defaultkw_new&_vn%5B2%5D=defaultkw_new&_vn%5B3%5D=seo_keywords_round_new&_cc%5B0%5D=IT&_cc%5B1%5D=IT&_cc%5B2%5D=IT&_cc%5B3%5D=ES&_comp=gzip&_fmt=JSON&_hashq%5B1%5D=1&_hashq%5B2%5D=1&_hashq%5B3%5D=1&_hstart%5B2%5D=1",
>       "HTTP/1.1",
>       "Connection: Close",
>       "X-URL:
> /searchkw/xml/?_q%5B0%5D=%28suzuki%7Bw%3D1%7D+115%7Bw%3D1%7D%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D4&_q%5B1%5D=%28suzuki%7Bw%3D1%7D%29+OPT%28115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B2%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B3%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AES+%28category%3Amiscellaneous%29+querywords%3E%3D2&_vn%5B0%5D=defaultkw_new&_vn%5B1%5D=defaultkw_new&_vn%5B2%5D=defaultkw_new&_vn%5B3%5D=seo_keywords_round_new&_cc%5B0%5D=IT&_cc%5B1%5D=IT&_cc%5B2%5D=IT&_cc%5B3%5D=ES&_comp=gzip&_fmt=JSON&_hashq%5B1%5D=1&_hashq%5B2%5D=1&_hashq%5B3%5D=1&_hstart%5B2%5D=1&ttls=672",
>   },
>   worker = 0x7ec7616f8b90 {
>     ws = 0x7ec7616f8d38 {
>       id = "wrk",
>       {s,f,r,e} = {0x7ec7616e6b20,0x7ec7616e6b20,(nil),+65536},
>     },
>     },
>     vcl = {
>       srcname = {
>         "input",
>         "Default",
>       },
>     },
> },
>
> }}}

New description:

 From Git af353a6b6a45e2a47e17aa84389950a1c65854ec

 With the debian package varnish 3.0.0 this bug didn't appear, it seems
 that this is a regression.

 This bugs is hit frequently, on our servers varnish never reaches one hour
 of uptime.

 {{{
 Aug 29 14:24:34 cloud3 varnishd[3495]: Child (19452)
 Panic message:
 Assert error in http_GetHdr(), cache_http.c line 266:
   Condition(l == strlen(hdr + 1)) not true.
 thread = (cache-worker)
 ident = Linux,2.6.32-5-amd64,x86_64,-sfile,-smalloc,-hcritbit,epoll
 Backtrace:
   0x42e4c8: /usr/sbin/varnishd() [0x42e4c8]
   0x429c08: /usr/sbin/varnishd(http_GetHdr+0x68) [0x429c08]
   0x433c47: /usr/sbin/varnishd(VRY_Match+0xf7) [0x433c47]
   0x427e86: /usr/sbin/varnishd(HSH_Lookup+0x2a6) [0x427e86]
   0x415a3b: /usr/sbin/varnishd() [0x415a3b]
   0x418fc5: /usr/sbin/varnishd(CNT_Session+0x675) [0x418fc5]
   0x430c78: /usr/sbin/varnishd() [0x430c78]
   0x42fe49: /usr/sbin/varnishd() [0x42fe49]
   0x7ffff6ab48ba: /lib/libpthread.so.0(+0x68ba) [0x7ffff6ab48ba]
   0x7ffff681c02d: /lib/libc.so.6(clone+0x6d) [0x7ffff681c02d]
 sp = 0x7ec790b21008 {
   fd = 53, id = 53, xid = 2071385764,
   client = 127.0.0.1 11364,
   step = STP_LOOKUP,
   handling = hash,
   restarts = 0, esi_level = 0
   flags =
   bodystatus = 4
   ws = 0x7ec790b21080 {
     id = "sess",
     {s,f,r,e} = {0x7ec790b21cc8,+3344,+65536,+65536},
   },
   http[req] = {
     ws = 0x7ec790b21080[sess]
       "GET",
 "/searchkw/xml/?_q%5B0%5D=%28suzuki%7Bw%3D1%7D+115%7Bw%3D1%7D%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D4&_q%5B1%5D=%28suzuki%7Bw%3D1%7D%29+OPT%28115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B2%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B3%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AES+%28category%3Amiscellaneous%29+querywords%3E%3D2&_vn%5B0%5D=defaultkw_new&_vn%5B1%5D=defaultkw_new&_vn%5B2%5D=defaultkw_new&_vn%5B3%5D=seo_keywords_round_new&_cc%5B0%5D=IT&_cc%5B1%5D=IT&_cc%5B2%5D=IT&_cc%5B3%5D=ES&_comp=gzip&_fmt=JSON&_hashq%5B1%5D=1&_hashq%5B2%5D=1&_hashq%5B3%5D=1&_hstart%5B2%5D=1",
       "HTTP/1.1",
       "Connection: Close",
       "X-URL:
 /searchkw/xml/?_q%5B0%5D=%28suzuki%7Bw%3D1%7D+115%7Bw%3D1%7D%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D4&_q%5B1%5D=%28suzuki%7Bw%3D1%7D%29+OPT%28115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B2%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AIT+%28category%3Amiscellaneous%29+querywords%3E%3D2+querywords%3C%3D3&_q%5B3%5D=OPT%28suzuki+OR+115%29+-category%3Aall+country%3AES+%28category%3Amiscellaneous%29+querywords%3E%3D2&_vn%5B0%5D=defaultkw_new&_vn%5B1%5D=defaultkw_new&_vn%5B2%5D=defaultkw_new&_vn%5B3%5D=seo_keywords_round_new&_cc%5B0%5D=IT&_cc%5B1%5D=IT&_cc%5B2%5D=IT&_cc%5B3%5D=ES&_comp=gzip&_fmt=JSON&_hashq%5B1%5D=1&_hashq%5B2%5D=1&_hashq%5B3%5D=1&_hstart%5B2%5D=1&ttls=672",
   },
   worker = 0x7ec7616f8b90 {
     ws = 0x7ec7616f8d38 {
       id = "wrk",
       {s,f,r,e} = {0x7ec7616e6b20,0x7ec7616e6b20,(nil),+65536},
     },
     },
     vcl = {
       srcname = {
         "input",
         "Default",
       },
     },
 },

 }}}

--

Comment(by phk):

 I would be very interested in knowing what the Vary: header it was
 processing looked like.

 You can either find this in varnishlog, if you can identify the object it
 is trying to match in the hash, or if the crash results in a core dump, it
 can be extracted from there.

 Alternatively, if you can simply get me the argument passed to
 http_GetHdr() from the coredump that would help too.

-- 
Ticket URL: <http://www.varnish-cache.org/trac/ticket/994#comment:1>
Varnish <http://varnish-cache.org/>
The Varnish HTTP Accelerator



More information about the varnish-bugs mailing list