[Varnish] #1027: signal 6 on calling error in vcl_deliver

Varnish varnish-bugs at varnish-cache.org
Mon Oct 10 12:14:12 CEST 2011


#1027: signal 6 on calling error in vcl_deliver
-------------------+--------------------------------------------------------
 Reporter:  kwy    |        Type:  defect  
   Status:  new    |    Priority:  normal  
Milestone:         |   Component:  varnishd
  Version:  trunk  |    Severity:  normal  
 Keywords:         |  
-------------------+--------------------------------------------------------
Description changed by kristian:

Old description:

> Hi.
>
> The following VCL will core varnish on accessing the /fail url, as will
> any other use of error in deliver.
>
> I have specific use cases for doing this, in particular to force a
> synthetic response on conditions detected in vcl_deliver.
>
> https://github.com/comotion/security.vcl/blob/master/vcl/modules/cloak.vcl
>
> As it is I've worked around the issue by using restarts, but I 'spect you
> want to avoid a segfault anyways.
>
> ---
>
> sub vcl_recv {
>    if (req.url ~ "^/fail"){
>       set req.http.fail = "fail";
>       return (lookup);
>    }
> }
>
> sub vcl_deliver {
>    if(req.http.fail){
>       error 200 "ok";
>    }
> }
>

>
> Child (23949) died signal=6 (core dumped)
> Child (23949) Panic message: Assert error in VCL_deliver_method(),
> ../../include/vcl_returns.h line 62:
>   Condition((1U << sp->handling) & ((1U << 9) | (1U << 0) )) not true.
> thread = (cache-worker)
> ident = Linux,2.6.32-33-server,x86_64,-sfile,-smalloc,-hcritbit,epoll
> Backtrace:
>   0x43665e: pan_backtrace+19
>   0x436933: pan_ic+1ad
>   0x43f8b8: VCL_deliver_method+10a
>   0x416f53: cnt_prepresp+52c
>   0x41bec2: CNT_Session+7c3
>   0x437d89: Pool_Work_Thread+8b3
>   0x44ab46: wrk_thread_real+3e7
>   0x44ad0f: WRK_thread+b4
>   0x7ffbcfefd9ca: _end+7ffbcf867752
>   0x7ffbcfc5a70d: _end+7ffbcf5c4495
> sp = 0x7ffbc87b5040 {
>   fd = 14, id = 14, xid = 1363644113,
>   client = 87.238.35.17 59639,
>   step = STP_PREPRESP,
>   handling = error,
>   err_code = 200, err_reason = ok,
>   restarts = 0, esi_level = 0
>   flags =
>   bodystatus = 0
>   ws = 0x7ffbc87b51a8 {
>     id = "sess",
>     {s,f,r,e} = {0x7ffbc87b5c48,+456,(nil),+65536},
>   },
>   http[req] = {
>     ws = 0x7ffbc87b51a8[sess]
>       "GET",
>       "/fail",
>       "HTTP/1.1",
>       "Host: u.delta9.pl",
>       "User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101
> Firefox/4.0.1",
>       "Accept:
> text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
>       "Accept-Language: en-us,en;q=0.5",
>       "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
>       "Keep-Alive: 115",
>       "DNT: 1",
>       "Connection: keep-alive",
>       "fail: fail",
>       "Accept-Encoding: gzip",
>   },
>   worker = 0x7ffb40ce69d0 {
>     ws = 0x7ffb40ce6ca0 {
>       id = "wrk",
>       {s,f,r,e} = {0x7ffb40cd4920,+144,(nil),+65536},
>     },
>     http[resp] = {
>       ws = 0x7ffb40ce6ca0[wrk]
>         "HTTP/1.1",
>         "Service Unavailable",
>         "Server: Varnish",
>         "Content-Type: text/html; charset=utf-8",
>         "Retry-After: 5",
>         "Content-Length: 419",
>         "Accept-Ranges: bytes",
>         "Date: Wed, 05 Oct 2011 20:27:16 GMT",
>         "X-Varnish: 1363644113",
>         "Age: 0",
>         "Via: 1.1 varnish",
>         "Connection: close",
>     },
>     },
>     vcl = {
>       srcname = {
>         "input",
>         "Default",
>       },
>     },
>   obj = 0x7ffba6eff000 {
>     xid = 1363644113,
>     ws = 0x7ffba6eff018 {
>       id = "obj",
>       {s,f,r,e} = {0x7ffba6eff540,+176,(nil),+1024},
>     },
>     http[obj] = {
>       ws = 0x7ffba6eff018[obj]
>         "HTTP/1.1",
>         "Service Unavailable",
>         "Date: Wed, 05 Oct 2011 20:27:16 GMT",
>         "Server: Varnish",
>         "Content-Type: text/html; charset=utf-8",
>         "Retry-After: 5",
>         "Content-Length: 419",
>     },
>     len = 419,
>     store = {
>       419 {
>         0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 |.<?xml
> version="|
>         31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 |1.0"
> encoding="u|
>         74 66 2d 38 22 3f 3e 0a 3c 21 44 4f 43 54 59 50
> |tf-8"?>.<!DOCTYP|
>         45 20 68 74 6d 6c 20 50 55 42 4c 49 43 20 22 2d |E html PUBLIC
> "-|
>         [355 more]
>       },
>     },
>   },
> },
>

> Child cleanup complete
> child (23985) Started
> Child (23985) said Child starts
> Child (23985) said SMF.s0 mmap'ed 2147483648 bytes of 2147483648

New description:

 Hi.

 The following VCL will core varnish on accessing the /fail url, as will
 any other use of error in deliver.

 I have specific use cases for doing this, in particular to force a
 synthetic response on conditions detected in vcl_deliver.

 https://github.com/comotion/security.vcl/blob/master/vcl/modules/cloak.vcl

 As it is I've worked around the issue by using restarts, but I 'spect you
 want to avoid a segfault anyways.

 ---
 {{{

 sub vcl_recv {
    if (req.url ~ "^/fail"){
       set req.http.fail = "fail";
       return (lookup);
    }
 }

 sub vcl_deliver {
    if(req.http.fail){
       error 200 "ok";
    }
 }

 }}}

 {{{
 Child (23949) died signal=6 (core dumped)
 Child (23949) Panic message: Assert error in VCL_deliver_method(),
 ../../include/vcl_returns.h line 62:
   Condition((1U << sp->handling) & ((1U << 9) | (1U << 0) )) not true.
 thread = (cache-worker)
 ident = Linux,2.6.32-33-server,x86_64,-sfile,-smalloc,-hcritbit,epoll
 Backtrace:
   0x43665e: pan_backtrace+19
   0x436933: pan_ic+1ad
   0x43f8b8: VCL_deliver_method+10a
   0x416f53: cnt_prepresp+52c
   0x41bec2: CNT_Session+7c3
   0x437d89: Pool_Work_Thread+8b3
   0x44ab46: wrk_thread_real+3e7
   0x44ad0f: WRK_thread+b4
   0x7ffbcfefd9ca: _end+7ffbcf867752
   0x7ffbcfc5a70d: _end+7ffbcf5c4495
 sp = 0x7ffbc87b5040 {
   fd = 14, id = 14, xid = 1363644113,
   client = 87.238.35.17 59639,
   step = STP_PREPRESP,
   handling = error,
   err_code = 200, err_reason = ok,
   restarts = 0, esi_level = 0
   flags =
   bodystatus = 0
   ws = 0x7ffbc87b51a8 {
     id = "sess",
     {s,f,r,e} = {0x7ffbc87b5c48,+456,(nil),+65536},
   },
   http[req] = {
     ws = 0x7ffbc87b51a8[sess]
       "GET",
       "/fail",
       "HTTP/1.1",
       "Host: u.delta9.pl",
       "User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101
 Firefox/4.0.1",
       "Accept:
 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
       "Accept-Language: en-us,en;q=0.5",
       "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
       "Keep-Alive: 115",
       "DNT: 1",
       "Connection: keep-alive",
       "fail: fail",
       "Accept-Encoding: gzip",
   },
   worker = 0x7ffb40ce69d0 {
     ws = 0x7ffb40ce6ca0 {
       id = "wrk",
       {s,f,r,e} = {0x7ffb40cd4920,+144,(nil),+65536},
     },
     http[resp] = {
       ws = 0x7ffb40ce6ca0[wrk]
         "HTTP/1.1",
         "Service Unavailable",
         "Server: Varnish",
         "Content-Type: text/html; charset=utf-8",
         "Retry-After: 5",
         "Content-Length: 419",
         "Accept-Ranges: bytes",
         "Date: Wed, 05 Oct 2011 20:27:16 GMT",
         "X-Varnish: 1363644113",
         "Age: 0",
         "Via: 1.1 varnish",
         "Connection: close",
     },
     },
     vcl = {
       srcname = {
         "input",
         "Default",
       },
     },
   obj = 0x7ffba6eff000 {
     xid = 1363644113,
     ws = 0x7ffba6eff018 {
       id = "obj",
       {s,f,r,e} = {0x7ffba6eff540,+176,(nil),+1024},
     },
     http[obj] = {
       ws = 0x7ffba6eff018[obj]
         "HTTP/1.1",
         "Service Unavailable",
         "Date: Wed, 05 Oct 2011 20:27:16 GMT",
         "Server: Varnish",
         "Content-Type: text/html; charset=utf-8",
         "Retry-After: 5",
         "Content-Length: 419",
     },
     len = 419,
     store = {
       419 {
         0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 |.<?xml version="|
         31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 |1.0" encoding="u|
         74 66 2d 38 22 3f 3e 0a 3c 21 44 4f 43 54 59 50 |tf-8"?>.<!DOCTYP|
         45 20 68 74 6d 6c 20 50 55 42 4c 49 43 20 22 2d |E html PUBLIC "-|
         [355 more]
       },
     },
   },
 },


 Child cleanup complete
 child (23985) Started
 Child (23985) said Child starts
 Child (23985) said SMF.s0 mmap'ed 2147483648 bytes of 2147483648
 }}}

--

-- 
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1027#comment:1>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator




More information about the varnish-bugs mailing list