
varnish-bugs at varnish-cache
Oct 10, 2011, 3:14 AM
Post #2 of 8
(379 views)
Permalink
|
|
Re: #1027: signal 6 on calling error in vcl_deliver
[In reply to]
|
|
#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 _______________________________________________ varnish-bugs mailing list varnish-bugs [at] varnish-cache https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs
|