[Varnish] #174: Varnish dies on assert error in http_FilterFields
Varnish
varnish-bugs at projects.linpro.no
Mon Oct 29 12:26:47 CET 2007
#174: Varnish dies on assert error in http_FilterFields
----------------------+-----------------------------------------------------
Reporter: anders | Owner: phk
Type: defect | Status: new
Priority: high | Milestone:
Component: varnishd | Version: trunk
Severity: major | Keywords: varnishd core dump http_FilterFields
----------------------+-----------------------------------------------------
Running Varnish/trunk (up to date to commit 2186), it crashes with this
message on the console:
{{{
Child said (2, 50455): <<Assert error in http_FilterFields(), cache_http.c
line 604:
Condition((fm) != NULL) not true.
errno = 32 (Broken pipe)
>>
Child said (2, 50455): <<Assert error in cnt_fetch(), cache_center.c line
311:
Condition((sp->backend) != NULL) not true.
errno = 0 (Unknown error: 0)
>>
Child said (2, 50455): <<Assert error in VBE_free_bereq(), cache_backend.c
line 163:
Condition((bereq) != NULL) not true.
errno = 22 (Invalid argument)
Assert error in cnt_fetch(), cache_center.c line 311:
Condition((sp->backend) != NULL) not true.
errno = 22 (Invalid argument)
>>
Child said (2, 50455): <<Assert error in WS_Release(), cache_ws.c line
165:
Condition(ws->r != NULL) not true.
errno = 0 (Unknown error: 0)
>>
Child said (2, 50455): <<Assert error in WS_Assert(), cache_ws.c line 59:
Condition(ws != NULL) not true.
errno = 32 (Broken pipe)
>>
Child said (2, 50455): <<Assert error in WS_Assert(), cache_ws.c line 66:
Condition(ws->s < ws->e) not true.
errno = 32 (Broken pipe)
>>
Cache child died pid=50455 status=0x8b
}}}
OS is FreeBSD/amd 7.0-BETA1 on a SMP, two-CPU system.
Backtrace:
(gdb) bt
#0 0x000000000042beb5 in WSL (w=0x0, tag=SLT_Debug, id=1634,
fmt=0x433489 "Hash Match: %s") at shmlog.c:246
#1 0x00000000004130e7 in HSH_Compare (sp=0x148394e008, obj=0x1485141b80)
at cache_hash.c:142
#2 0x0000000000423d6f in hcl_lookup (sp=0x148394e008, noh=0x1486e3e780)
at hash_classic.c:156
#3 0x0000000000413587 in HSH_Lookup (sp=0x148394e008) at cache_hash.c:190
#4 0x000000000040f548 in cnt_lookup (sp=0x148394e008) at
cache_center.c:516
#5 0x00000000004102ca in CNT_Session (sp=0x148394e008) at steps.h:38
#6 0x00000000004181fd in wrk_do_one (w=0x7fffe5b2eae0) at
cache_pool.c:193
#7 0x00000000004186f6 in wrk_thread (priv=0x800f11220) at
cache_pool.c:246
#8 0x0000000800a99958 in pthread_getprio () from /lib/libthr.so.3
#9 0x0000000000000000 in ?? ()
Cannot access memory at address 0x7fffe5b2f000
My VCL:
{{{
backend default {
set backend.host = "192.168.0.3";
set backend.port = "80";
}
acl purge {
"192.168.0.4"/32;
}
sub vcl_recv {
if ((req.http.host ~ "^(cache.finn.no|finn.no|www.finn.no)$") ||
(req.http.host == "banner.finn.no" && req.url ~
"^/(jsp2|finn/gojsp|daily|board|auximg/papirfly|finn/cacheable|crossdomain.xml)"))
{
if (req.request == "GET" || req.request == "HEAD") {
lookup;
} elsif (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
lookup;
} else {
pipe;
}
} else {
error 403 "Access denied. Contact cacheadmin at finn.no if
you have problems.";
}
}
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.ttl < 86400s) {
set obj.ttl = 604800s;
}
if (obj.http.Cookie) {
remove obj.http.Cookie;
}
if (obj.http.Set-Cookie) {
remove obj.http.Set-Cookie;
}
insert;
}
}}}
--
Ticket URL: <http://varnish.projects.linpro.no/ticket/174>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list