[Varnish] #1053: Persistent storage: space leakage

Varnish varnish-bugs at varnish-cache.org
Tue Nov 8 16:39:30 CET 2011


#1053: Persistent storage: space leakage
----------------------+-----------------------------------------------------
 Reporter:  dumbbell  |        Type:  defect  
   Status:  new       |    Priority:  normal  
Milestone:            |   Component:  varnishd
  Version:  trunk     |    Severity:  major   
 Keywords:            |  
----------------------+-----------------------------------------------------

Comment(by dumbbell):

 I forgot to mention how I tested the patch...

 In smp_open_segs(), I added the following printf, to know where new
 segments will be stored after the silo is reloaded:
 {{{
 printf("Free offset: %lu\n", sc->free_offset);
 }}}
 (after line 180 in source:bin/varnishd/storage/storage_persistent.c).

 I then started with a freshly created silo of 5Mb and used curl(1) to fill
 the cache.

  * With an unpatched Varnish, the maximum free offset decreases after each
 complete "rewrite" of the silo. This continues until this maximum free
 offset is too low and the process pan_ic() (caused by "`assert (l >=
 sc->free_reserve);`"): there's not `free_reserve` bytes between "`se`" and
 the element closest to the end of the silo AND not `free_reserve` bytes
 between the first offset (sc->ident->stuff[SMP_SPC_STUFF]) and "se".
  * With a patched Varnish, the maximum free offset stays around
 `sc->mediasize`.

 I confirmed this with a bigger silo (1Gb) and more clients/requests.

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




More information about the varnish-bugs mailing list