[Varnish] #1162: ban lurker races against HSH_Unbusy()
Varnish
varnish-bugs at varnish-cache.org
Wed Jul 4 12:53:13 CEST 2012
#1162: ban lurker races against HSH_Unbusy()
----------------------+-----------------------------------------------------
Reporter: martin | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: varnishd | Version: trunk
Severity: normal | Keywords:
----------------------+-----------------------------------------------------
The ban lurker can raise against HSH_Unbusy(), and try to get the object
of an objcore that is still flagged as busy causing assertion.
This is particularly visible in 3.0, when using 'do_stream = true;', as
the object will be inserted in the ban list on creation, but not unbusyied
until after the fetch has finished.
It applies to current trunk as well, and also when do_stream isn't set,
but the window of race is much smaller.
{{{
*** v1 2.5 debug| Child (30452) Panic message: Assert error in
oc_getobj(), cache/cache.h line 436:\n
*** v1 2.5 debug| Condition((oc->flags & (1<<1)) == 0) not true.\n
*** v1 2.5 debug| thread = (ban-lurker)\n
*** v1 2.5 debug| ident =
Linux,3.2.0-26-generic,x86_64,-sfile,-smalloc,-hcritbit,epoll\n
*** v1 2.5 debug| Backtrace:\n
*** v1 2.5 debug| 0x43cce7: pan_backtrace+28\n
*** v1 2.5 debug| 0x43cfe0: pan_ic+1bd\n
*** v1 2.5 debug| 0x413981: oc_getobj+c9\n
*** v1 2.5 debug| 0x4168f6: ban_lurker_work+528\n
*** v1 2.5 debug| 0x416cbd: ban_lurker+dd\n
*** v1 2.5 debug| 0x4524ec: wrk_bgthread+103\n
*** v1 2.5 debug| 0x7fd6d1162e9a: _end+7fd6d0ab7662\n
*** v1 2.5 debug| 0x7fd6d0e904bd: _end+7fd6d07e4c85\n
}}}
--
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1162>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list