[Varnish] #1188: Assert error in hcb_insert(), hash_critbit.c line 212: Condition((y)->magic == 0x125c4bd2) not true.
Varnish
varnish-bugs at varnish-cache.org
Mon Aug 27 09:16:15 CEST 2012
#1188: Assert error in hcb_insert(), hash_critbit.c line 212:
Condition((y)->magic == 0x125c4bd2) not true.
----------------------+--------------------
Reporter: flies | Owner:
Type: defect | Status: new
Priority: lowest | Milestone:
Component: varnishd | Version: 3.0.3
Severity: normal | Resolution:
Keywords: |
----------------------+--------------------
Changes (by phk):
* priority: normal => lowest
Comment:
As always I'm not ruling out that there is a bug, but given how much
beating up the critbit code gets on all the varnish installations out
there, I find it very improbable that your precise site can trigger a
unknown and obscure bug this often.
I spent some time staring at the relevant code, and the one thing that
keeps popping up in my mind is that the trouble you see is _exactly_ what
you would expect to see if there is a "use after free" mistake somewhere
else in the program, (which in varnish' case includes the compiled VCL,
any vmods and any libraries they use.)
I have taken a quick look at the vmod_redis in github, and I don't spot
any obvious use-after-free bugs, but I think that vmod leaks memory big
time: All the strdup() returns never get freed, and I don't see where the
redisContext's get freed either.
I'm going to leave this ticket open, but I will assign it "lowest"
priority, because there is no way I can debug this other than a total code
source-code inspection.
What I would suggest to you, is to build varnish from source, and put a
check before the assert which will record what the value actually is, when
it does not match the expected magic marker. Sometimes that value may
give a clue to what code overwrote the value that should have been there.
The other thing you can try is to use a the "classic" hash instead of
critbit, it will not make the bug go away, but it will cause it to have a
different impact, which again could offer clues to what/where the bug
actually is.
--
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1188#comment:1>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator
More information about the varnish-bugs
mailing list