• Pål Hermunn Johansen's avatar
    Fix problem with purging and the n_obj_purged counter · c21fae9a
    Pål Hermunn Johansen authored
    When the do..while loop in HSH_Purge executes on a oh with many
    popular variants, there is a potential problem with the "array" of oc
    pointers, allocated in the thread workspace. If many of the oc's have
    positive refcounts, they will fill up the array and
    
    	EXP_Rearm(oc, now, ttl, grace, keep);
    	(void)HSH_DerefObjCore(wrk, &oc, 0);
    
    will be called several on the same oc's. At the same time, the counter
    n_obj_purged will be updated with a too low number.
    
    The test case demonstrates how we get a too low value for this counter,
    but it is not able to force varnishd to use a siginificant amount of CPU.
    c21fae9a
Name
Last commit
Last update
..
cache.h Loading commit data...
cache_acceptor.c Loading commit data...
cache_backend.c Loading commit data...
cache_backend.h Loading commit data...
cache_backend_cfg.c Loading commit data...
cache_backend_probe.c Loading commit data...
cache_backend_tcp.c Loading commit data...
cache_ban.c Loading commit data...
cache_ban.h Loading commit data...
cache_ban_build.c Loading commit data...
cache_ban_lurker.c Loading commit data...
cache_busyobj.c Loading commit data...
cache_cli.c Loading commit data...
cache_deliver_proc.c Loading commit data...
cache_director.c Loading commit data...
cache_director.h Loading commit data...
cache_esi.h Loading commit data...
cache_esi_deliver.c Loading commit data...
cache_esi_fetch.c Loading commit data...
cache_esi_parse.c Loading commit data...
cache_expire.c Loading commit data...
cache_fetch.c Loading commit data...
cache_fetch_proc.c Loading commit data...
cache_filter.h Loading commit data...
cache_gzip.c Loading commit data...
cache_hash.c Loading commit data...
cache_http.c Loading commit data...
cache_lck.c Loading commit data...
cache_main.c Loading commit data...
cache_mempool.c Loading commit data...
cache_obj.c Loading commit data...
cache_obj.h Loading commit data...
cache_panic.c Loading commit data...
cache_pool.c Loading commit data...
cache_pool.h Loading commit data...
cache_priv.h Loading commit data...
cache_range.c Loading commit data...
cache_req.c Loading commit data...
cache_req_body.c Loading commit data...
cache_req_fsm.c Loading commit data...
cache_rfc2616.c Loading commit data...
cache_session.c Loading commit data...
cache_shmlog.c Loading commit data...
cache_transport.h Loading commit data...
cache_vary.c Loading commit data...
cache_vcl.c Loading commit data...
cache_vrt.c Loading commit data...
cache_vrt_priv.c Loading commit data...
cache_vrt_re.c Loading commit data...
cache_vrt_var.c Loading commit data...
cache_vrt_vmod.c Loading commit data...
cache_wrk.c Loading commit data...
cache_ws.c Loading commit data...