[Varnish] #1660: range and synth doesn't mix causing assert

Varnish varnish-bugs at varnish-cache.org
Tue Jan 20 14:10:35 CET 2015


#1660: range and synth doesn't mix causing assert
----------------------+-------------------
 Reporter:  martin    |      Owner:
     Type:  defect    |     Status:  new
 Priority:  normal    |  Milestone:
Component:  varnishd  |    Version:  4.0.2
 Severity:  normal    |   Keywords:
----------------------+-------------------
 If a range delivery is attempted on a synth response, it will cause
 assertion.

 {{{
 ***  v1    1.4 debug| Assert error in v1d_dorange(),
 cache/cache_http1_deliver.c line 95:\n
 ***  v1    1.4 debug|   Condition((req->obj) != NULL) not true.\n
 ***  v1    1.4 debug| thread = (cache-worker)\n
 ***  v1    1.4 debug| version = varnish-4.0.3-rc1 revision 653a9ea\n
 ***  v1    1.4 debug| ident =
 Linux,3.16.0-4-amd64,x86_64,-smalloc,-smalloc,-hcritbit,epoll\n
 ***  v1    1.4 debug| Backtrace:\n
 ***  v1    1.4 debug|   0x451049: pan_backtrace+0x19\n
 ***  v1    1.4 debug|   0x450f40: pan_ic+0x330\n
 ***  v1    1.4 debug|   0x45e0a3: v1d_dorange+0x133\n
 ***  v1    1.4 debug|   0x45f154: V1D_Deliver_Synth+0x474\n
 ***  v1    1.4 debug|   0x45ca44: cnt_synth+0x5d4\n
 ***  v1    1.4 debug|   0x45793f: CNT_Request+0x79f\n
 ***  v1    1.4 debug|   0x445494: HTTP1_Session+0x604\n
 ***  v1    1.4 debug|   0x46179e: ses_req_pool_task+0x22e\n
 ***  v1    1.4 debug|   0x461255: ses_sess_pool_task+0x285\n
 ***  v1    1.4 debug|   0x46078f: SES_pool_accept_task+0x2bf\n
 ***  v1    1.4 debug| req = 0x7f79a0819020 {\n
 ***  v1    1.4 debug|   sp = 0x7f79a080e1e0, vxid = 1073742825,  step =
 R_STP_SYNTH,\n
 ***  v1    1.4 debug|   req_body = R_BODY_NONE,\n
 ***  v1    1.4 debug|   err_code = 200, err_reason = asdf,\n
 ***  v1    1.4 debug|   restarts = 0, esi_level = 0,\n
 ***  v1    1.4 debug|   sp = 0x7f79a080e1e0 {\n
 ***  v1    1.4 debug|     fd = 11, vxid = 1000,\n
 ***  v1    1.4 debug|     client = 127.0.0.1 46065,\n
 ***  v1    1.4 debug|     step = S_STP_WORKING,\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug|   worker = 0x7f79adfbbc78 {\n
 ***  v1    1.4 debug|     ws = 0x7f79adfbbe98 {\n
 ***  v1    1.4 debug|       id = "wrk",\n
 ***  v1    1.4 debug|       {s,f,r,e} =
 {0x7f79adfbb440,0x7f79adfbb440,(nil),+2048},\n
 ***  v1    1.4 debug|     },\n
 ***  v1    1.4 debug|   VCL::method = 0x0,\n
 ***  v1    1.4 debug|   VCL::return = deliver,\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug|   ws = 0x7f79a08191b8 {\n
 ***  v1    1.4 debug|     id = "req",\n
 ***  v1    1.4 debug|     {s,f,r,e} =
 {0x7f79a081b010,+248,(nil),+57360},\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug|   http[req] = {\n
 ***  v1    1.4 debug|     ws = 0x7f79a08191b8[req]\n
 ***  v1    1.4 debug|       "GET",\n
 ***  v1    1.4 debug|       "/",\n
 ***  v1    1.4 debug|       "HTTP/1.1",\n
 ***  v1    1.4 debug|       "Range: 0-1",\n
 ***  v1    1.4 debug|       "X-Forwarded-For: 127.0.0.1",\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug|   http[resp] = {\n
 ***  v1    1.4 debug|     ws = 0x7f79a08191b8[req]\n
 ***  v1    1.4 debug|       "HTTP/1.1",\n
 ***  v1    1.4 debug|       "200",\n
 ***  v1    1.4 debug|       "asdf",\n
 ***  v1    1.4 debug|       "Date: Tue, 20 Jan 2015 13:08:48 GMT",\n
 ***  v1    1.4 debug|       "Server: Varnish",\n
 ***  v1    1.4 debug|       "X-Varnish: 1001",\n
 ***  v1    1.4 debug|       "Content-Type: text/html; charset=utf-8",\n
 ***  v1    1.4 debug|       "Retry-After: 5",\n
 ***  v1    1.4 debug|       "Content-Length: 233",\n
 ***  v1    1.4 debug|       "Connection: keep-alive",\n
 ***  v1    1.4 debug|       "Accept-Ranges: bytes",\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug|   vcl = {\n
 ***  v1    1.4 debug|     srcname = {\n
 ***  v1    1.4 debug|       "input",\n
 ***  v1    1.4 debug|       "Builtin",\n
 ***  v1    1.4 debug|     },\n
 ***  v1    1.4 debug|   },\n
 ***  v1    1.4 debug| },\n
 ***  v1    1.4 debug| \n
 ***  v1    1.4 debug| \n
 }}}

 This will happen only for a synth of status 200, as rangeisn't attempted
 for other status codes.

-- 
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1660>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator



More information about the varnish-bugs mailing list