Hey all, I've recently been playing with squid 3 trying to figure out this n->write_pending problem in mem_node.cc.
I've noticed that whenever memNodeWriteComplete is called and n->write_pending is still set (causing assert to abort), the actual mem_node object isn't holding any data (n->dataRange()) gives nothing. I've also noticed a few conditions where a file will be written to disk and then unlinked before mem_node::memNodeWriteComplete gets the chance to run. This doesn't seem to happen every time the assert fails, but it has happened quiet often in my experience. I've made a small fix for myself by editing the assert as follows: assert(n->write_pending || (n->end() - n->start()) == 0); The problem seems to have dissapeared. I'm aware that this isn't a proper fix, but I'm hoping that some of this info might help shed some light on the core problem to those of you that know the code a lot better than I do. Thanks! Dan Thomson Systems Engineer Peer1 Network 1600 555 West Hastings Vancouver, BC V6B 4N5 866-683-7747 http://www.peer1.com
