[Varnish] #985: Assert error in wrk_thread_real

Varnish varnish-bugs at varnish-cache.org
Fri Aug 19 18:05:36 CEST 2011


#985: Assert error in wrk_thread_real
----------------------------+-----------------------------------------------
 Reporter:  davidlc         |        Type:  defect  
   Status:  new             |    Priority:  normal  
Milestone:                  |   Component:  varnishd
  Version:  trunk           |    Severity:  critical
 Keywords:  transient #953  |  
----------------------------+-----------------------------------------------
 After being severly bitten by bug #953, I managed to limit the transient
 storage size thanks to the doc commited on 2011/08/17. Using a very little
 memory setting to test proper nuking:


 {{{
 DAEMON_OPTS="-a :80 -p shortlived=1 -s malloc,3M -s Transient=malloc,3M \
 -f /etc/varnish/varnish.vcl -n /var/run/varnish -p thread_pool_max=2000 -p
 \
 thread_pools=2 -p lru_interval=6 -p thread_pool_min=100 -p
 thread_pool_add_delay=2 \
 -p session_linger=100 -p listen_depth=4096 -p sess_workspace=65536 -p
 ping_interval=2 \
 -p sess_timeout=1 -t 120 -T 127.0.0.1:8888"
 }}}

 I launch a script requesting thousands of URLs.
 Then every 12s or so, the varnish instance crashes with:

 {{{

 /var/run/varnish[10287]: Child (16198) Panic message: Assert error in
 wrk_thread_real(), cache_pool.c line 187:
 Condition((w->bereq->ws) == 0) not true.
 thread = (cache-worker)
 ident = Linux,2.6.18-238.12.1.el5,x86_64,-smalloc,-smalloc,-hcritbit,epoll
 Backtrace:
 0x42b386: pan_ic+b6
 0x42cb97: wrk_thread_real+427
 0x311fa0673d: _end+311f393d65
 0x311f2d44bd: _end+311ec61ae5
 }}}

 The varnishstat output just before a crash looks like:
 [http://pastebin.com/RU41NRxX]

 The OS is CentOS 5.6

 The VCL used is empty/default: just a backend.


 {{{
 backend default {
      .host = "mybackend";
      .port = "80";
      .saintmode_threshold = 20000;
      .probe = {
                 .request =
                 "GET /test.html HTTP/1.1"
                 "Host: lbcheck"
                 "Connection: close";
                 .timeout = 0.2 s;
                 .interval = 1s;
                 .window = 4;
                 .threshold = 2;
         }
 }
 }}}


 The served objects are quite big and numerous (filling this small cache).
 But they should have a large TTL as the backend makes them expire in a day
 (dont ask why we cache video chunks ;):


 {{{
    11 TxHeader     c Server: nginx
    11 TxHeader     c Content-Type: video/MP2T
    11 TxHeader     c Last-Modified: Fri, 06 May 2011 00:13:41 GMT
    11 TxHeader     c Expires: Sat, 20 Aug 2011 15:21:34 GMT
    11 TxHeader     c Cache-Control: max-age=86400
    11 TxHeader     c Content-Length: 19740
    11 TxHeader     c Accept-Ranges: bytes
    11 TxHeader     c Date: Fri, 19 Aug 2011 15:21:34 GMT
    11 TxHeader     c X-Varnish: 1136508484
    11 TxHeader     c Age: 0
    11 TxHeader     c Via: 1.1 varnish
 }}}

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




More information about the varnish-bugs mailing list