[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