[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