[Varnish] #1038: Assert error in ESI_DeliverChild

Varnish varnish-bugs at varnish-cache.org
Mon Oct 24 16:58:40 CEST 2011


#1038: Assert error in ESI_DeliverChild
----------------------+-----------------------------------------------------
 Reporter:  scoof     |       Owner:       
     Type:  defect    |      Status:  new  
 Priority:  normal    |   Milestone:       
Component:  varnishd  |     Version:  trunk
 Severity:  normal    |    Keywords:       
----------------------+-----------------------------------------------------
 Varnish with gzip and esi asserts when doing many ESI requests.

 To recreate, generate ESI files with many ESI includes:

 for a in `seq 1 1000`; do echo "<esi:include src='/esimany$a.html' />" >>
 esimany.html; echo abc$a > esimany$a.html; done

 When varnish is fetching esimany.html and fragments from the backend,
 everything works, but when fetching from cache, it asserts:

 Last panic at: Mon, 24 Oct 2011 14:51:10 GMT
 Assert error in ESI_DeliverChild(), cache_esi_deliver.c line 493:
   Condition((dbits) != 0) not true.
 thread = (cache-worker)
 ident = Linux,3.0.0-1-amd64,x86_64,-smalloc,-smalloc,-hcritbit,epoll
 Backtrace:
   0x42f2d5: pan_ic+d5
   0x41dac1: ESI_DeliverChild+491
   0x432508: RES_WriteObj+4a8
   0x4175f7: CNT_Session+697
   0x41d326: ESI_Deliver+896
   0x432308: RES_WriteObj+2a8
   0x4175f7: CNT_Session+697
   0x430cfd: Pool_Work_Thread+1bd
   0x43fca2: wrk_thread_real+202
   0x7f642bb89b40: _end+7f642b509e10
 sp = 0x7f6420c07040 {
   fd = 15, id = 15, xid = 2007150718,
   client = 127.0.0.1 47825,
   step = STP_DELIVER,
   handling = deliver,
   restarts = 0, esi_level = 1
   flags =
   bodystatus = 0
   ws = 0x7f6420c071a8 {
     id = "sess",
     {s,f,r,e} = {0x7f6420c07c48,+384,(nil),+65536},
   },
   http[req] = {
     ws = 0x7f6420c071a8[sess]
       "GET",
       "/esimany432.html",
       "HTTP/1.1",
       "User-Agent: curl/7.21.7 (x86_64-pc-linux-gnu) libcurl/7.21.7
 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 libssh2/1.2.8 librtmp/2.3",
       "Host: localhost",
       "Accept: */*",
       "X-Forwarded-For: 127.0.0.1",
       "Accept-Encoding: gzip",
   },
   worker = 0x7f641c7eea20 {
     ws = 0x7f641c7eecf0 { overflow
       id = "wrk",
       {s,f,r,e} = {0x7f641c7dc9d0,+65536,(nil),+65536},
     },
     http[resp] = {
       ws = 0x7f641c7eecf0[wrk]
         "HTTP/1.1",
         "OK",
         "Server: Apache/2.2.21 (Debian)",
         "Last-Modified: Mon, 24 Oct 2011 14:49:56 GMT",
         "ETag: "8815a2-7-4b00c894c3d8e"",
         "Content-Type: text/html",
         "Content-Encoding: gzip",
         "Age: 1",
         "Via: 1.1 varnish",
     },
     },
     vcl = {
       srcname = {
         "input",
         "Default",
       },
     },
   obj = 0x7f641b6d3800 {
     xid = 2007150717,
     ws = 0x7f641b6d3818 {
       id = "obj",
       {s,f,r,e} = {0x7f641b6d39f0,+248,(nil),+280},
     },
     http[obj] = {
       ws = 0x7f641b6d3818[obj]
         "HTTP/1.1",
         "OK",
         "Date: Mon, 24 Oct 2011 14:51:08 GMT",
         "Server: Apache/2.2.21 (Debian)",
         "Last-Modified: Mon, 24 Oct 2011 14:49:56 GMT",
         "ETag: "8815a2-7-4b00c894c3d8e"",
         "Content-Type: text/html",
         "Content-Encoding: gzip",
         "Content-Length: 39",
     },
     len = 39,
     store = {
       39 {
         1f 8b 08 00 00 00 00 00 00 03 02 00 00 00 ff ff |................|
         4a 4c 4a 36 31 36 e2 02 00 00 00 ff ff 03 00 b3 |JLJ616..........|
         b2 c2 7f 07 00 00 00                            |.......|
       },
     },
   },
 },

 It looks like the assert happens at around the same time that varnishlog
 starts logging LostHeader.

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




More information about the varnish-bugs mailing list