[Varnish] #1675: Condition((vbc->in_waiter) != 0) not true.

Varnish varnish-bugs at varnish-cache.org
Tue May 12 17:44:05 CEST 2015


#1675: Condition((vbc->in_waiter) != 0) not true.
----------------------------------+----------------------------------
 Reporter:  zaterio@…             |       Owner:  phk
     Type:  defect                |      Status:  needinfo
 Priority:  normal                |   Milestone:  Varnish 4.0 release
Component:  varnishd              |     Version:  trunk
 Severity:  normal                |  Resolution:
 Keywords:  in_waiter tcp_handle  |
----------------------------------+----------------------------------

Comment (by zaterio@…):

 {{{
 0 Debug          - "------> Handler fd 105 in_w 1 state 0x2 ev 1 have_been
 0"
 0 Debug          - "------> Handler fd 105 in_w 0 state 0x2 ev 2 have_been
 1"
 }}}

 both status are VBC_STATE_USED, the first status is changed to the second
 status by:

 {{{
 case VBC_STATE_USED:
                 vbc->in_waiter = 0;
                 vbc->have_been_in_waiter = 1;
                 break;
 }}}


 And then, when the second handler hits:

 {{{
 AN(vbc->in_waiter);
 }}}

 Fails because in_waiter = 0.

 vbc->in_waiter = 0; must be changed to non zero value in case
 VBC_STATE_USED.

 In my scenario states "in_w = 0" are rare, and when they appear varnish
 dies

 For example handlers after 2 hours running, shows no "in_waiter = 0":

 {{{
  cat /home/out.log |grep Handler|awk '{print $8" "$9" "$10" "$11" "$12"
 "$13" "$14" "$15}'|sort|uniq -c|sort -n
       2 in_w 1 state 0x4 ev 1 have_been 0"
       3 in_w 1 state 0x4 ev 1 have_been 1"
      14 in_w 1 state 0x1 ev 2 have_been 0"
      18 in_w 1 state 0x8 ev 2 have_been 0"
     235 in_w 1 state 0x8 ev 2 have_been 1"
     809 in_w 1 state 0x2 ev 2 have_been 0"
    8863 in_w 1 state 0x2 ev 2 have_been 1"
 }}}

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



More information about the varnish-bugs mailing list