Panic message: Assert error in exp_timer(), cache_expire.c line 303

Sascha Ottolski ottolski at web.de
Mon Jan 26 09:17:44 CET 2009


Dear list,

after introducing a little change to my VCL, we now see crashes like 
this frequently:

Jan 25 01:49:43 localhost varnishd[6039]: Child (25613) not responding 
to ping, killing it.
Jan 25 01:49:43 localhost varnishd[6039]: Child (25613) died signal=6
Jan 25 01:49:43 localhost varnishd[6039]: Child (25613) Panic message: 
Assert error in exp_timer(), cache_expire.c line 303:   
Condition(oe2->timer_when >= oe->timer_when) not true.  thread = 
(cache-timeout)
Jan 25 01:49:43 localhost varnishd[6039]: Child cleanup complete
Jan 25 01:49:43 localhost varnishd[6039]: child (2663) Started

(I've also seen such crashes without the "not responding" messages 
before the Panic).

It probably has a close tie to this part in the VCL, as the crashes 
didn't happen without it, and the crashes seem to happen after roughly 
24 hours of runtime (but strange enough, didn't happen last night after 
it does some days in a row):

sub vcl_hit {
    if (req.request == "PURGE") {
        set obj.ttl = 0s;
        error 200 "Purged.";
    }
    # this line seems to trigger the crash
    set obj.ttl = 1d;
}

At the same time, varnish is started with "-t 86400". (BTW, it's a bit 
inconsistent that it doesn't seem to be allowed to say "-t 1d" like in 
the VCL).

I found a thread from december on the -dev list about a similar crash, 
but it doesn't appear to have been solved by now.

It all happens with trunk, r3497.

I'd appreciate any pointers to get around this. Is there anything I 
should see in the varnishlog about the crash reason? What to look for?


Thanks in advance,

Sascha



More information about the varnish-misc mailing list