[Varnish] #150: Varnish 1.1 dies with assert error in wrk_do_one
Varnish
varnish-bugs at projects.linpro.no
Tue Aug 14 23:48:47 CEST 2007
#150: Varnish 1.1 dies with assert error in wrk_do_one
----------------------+-----------------------------------------------------
Reporter: anders | Owner: phk
Type: defect | Status: new
Priority: high | Milestone:
Component: varnishd | Version: 1.1
Severity: normal | Keywords: varnishd core dump wrk_do_one
----------------------+-----------------------------------------------------
I am running Varnish 1.1 (from ports, with patches by des committed july
25th) in FreeBSD 6.2-RELEASE/amd64, on Intel hardware.
Every now and then, Varnish dies with these error messages. Example 1:
Child said (2, 4119): <<Assert error in wrk_do_one(), cache_pool.c line
198:
Condition(!isnan(w->used)) not true.
errno = 0 (Unknown error: 0)
Assert error in wrk_do_one(), cache_pool.c line 198:
Condition(!isnan(w->used)) not true.
errno = 0 (Unknown error: 0: 0)
>>
Cache child died pid=4119 status=0x6
Example 2:
Child said (2, 5287): <<Assert error in wrk_do_one(), cache_pool.c line
198:
Condition(!isnan(w->used)) not true.
errno = 32 (Broken pipe)
>>
Cache child died pid=5287 status=0x6
My VCL:
{{{
backend foo {
set backend.host = "80.91.1.1";
set backend.port = "80";
}
backend bob {
set backend.host = "80.91.1.2";
set backend.port = "80";
}
backend foobar {
set backend.host = "80.91.1.3";
set backend.port = "80";
}
backend bar {
set backend.host = "80.91.1.4";
set backend.port = "80";
}
acl mypurge {
"80.91.1.5";
}
sub vcl_recv {
if (req.http.host ~
"^(foo.aftenposten.no|bar.aftenposten.no|baz.aftenposten.no)$") {
set req.backend = foo;
} elsif (req.http.host ~ "^(bob.aftenposten.no)$") {
set req.backend = bob;
} elsif (req.http.host ~
"^(foobar.aftenposten.no|barbar.aftenposten.no|bazbaz.aftenposten.no)$") {
set req.backend = foobar;
} elsif (req.http.host ~
"^(www.bar.no|bar.no|www.baz.no|baz.no)$") {
set req.backend = bar;
} else {
error 403 "Access denied. Contact cacheadmin at aftenposten.no if you
have problems.";
}
if (req.request == "GET" || req.request == "HEAD") {
if (req.http.Expect) {
pipe;
}
if (req.http.Authenticate) {
pass;
}
lookup;
} elsif (req.request == "PURGE") {
if (client.ip ~ aipurge) {
lookup;
} else {
error 405 "Not allowed.";
}
} else {
pass;
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
} else {
fetch;
}
}
sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
} else {
deliver;
}
}
sub vcl_fetch {
if (obj.status == 404 || obj.status == 503) {
pass;
}
if (obj.http.host ~
"^(foo.aftenposten.no|bar.aftenposten.no|baz.aftenposten.no)$") {
if (obj.http.Set-Cookie) {
remove obj.http.Set-Cookie;
}
}
if (!obj.valid) {
error;
}
if (!obj.cacheable) {
pass;
}
insert;
}
}}}
--
Ticket URL: <http://varnish.projects.linpro.no/ticket/150>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list