[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