[Varnish] #231: Assert error in VCL_recv_method()
Varnish
varnish-bugs at projects.linpro.no
Tue Apr 22 13:52:48 CEST 2008
#231: Assert error in VCL_recv_method()
----------------------+-----------------------------------------------------
Reporter: Bart | Owner: phk
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: trunk
Severity: normal | Keywords:
----------------------+-----------------------------------------------------
With todays version of trunk, i get this assert error:
{{{
Apr 22 10:30:03 andromeda varnishd: Child (32137) said <<managed to mmap
1073741824 bytes of 1073741824>>
Apr 22 10:30:03 andromeda varnishd: Child (32137) said <<Ready>>
Apr 22 10:30:03 andromeda varnishd: Child (32137) said <<Assert error in
VCL_recv_method(), ../../include/vcl_returns.h line 39:>>
Apr 22 10:30:03 andromeda varnishd: Child (32137) said <<
Condition(sp->handling & ((1 << 0)|(1 << 10)|(1 << 4)|(1 << 3)|(1 << 1)))
not true.>>
Apr 22 10:30:03 andromeda varnishd: Child (32143) said <<Child starts>>
#0 0x00002aaaab3c607b in raise () from /lib/libc.so.6
#1 0x00002aaaab3c784e in abort () from /lib/libc.so.6
#2 0x00002aaaaabc5b60 in lbv_assert (func=0x43b010 "VCL_recv_method",
file=0x43b067 "../../include/vcl_returns.h", line=39,
cond=0x43b028 "sp->handling & ((1 << 0)|(1 << 10)|(1 << 4)|(1 << 3)|(1
<< 1))", err=4) at assert.c:65
#3 0x000000000042043a in VCL_recv_method (sp=0x25b6008) at
../../include/vcl_returns.h:39
#4 0x000000000040da2e in cnt_recv (sp=0x25b6008) at cache_center.c:791
#5 0x000000000040e2f1 in CNT_Session (sp=0x25b6008) at steps.h:34
#6 0x0000000000419ea6 in wrk_do_one (w=0x42803cc0) at cache_pool.c:194
#7 0x000000000041a763 in wrk_thread (priv=0x25acc30) at cache_pool.c:247
#8 0x00002aaaaafedf1a in start_thread () from /lib/libpthread.so.0
#9 0x00002aaaab4605d2 in clone () from /lib/libc.so.6
#10 0x0000000000000000 in ?? ()
}}}
The VCL code to reproduce this:
{{{
backend default {
.host = "192.168.100.20";
.port = "80";
}
acl blacklisted {
"192.168.100.100";
}
sub vcl_recv {
call vcl_recv_sentry;
}
sub vcl_recv_sentry {
if (client.ip ~ blacklisted) {
error 503 "Your IP has been blocked.";
}
if (req.request == "TRACE") {
error 501 "TRACE request denied.";
}
}
}}}
If it matters, the system is a linux 2.6.18-53.1.13.el5xen (x86_64).[[BR]]
The error only seems to occur when the checks are in a separate
subroutine, they do work when placed in vcl_recv.
--
Ticket URL: <http://varnish.projects.linpro.no/ticket/231>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list