> Amos, could you please poke the leak in IPAddress:GetAddrInfo a little?
I'll give it another try. But don't hold your breath too long on that one. Did you see my note on it? I tracked that leak backwards from two segfaults to the connect() system call. Then I tracked the allocation from my init forwards to the connect() call. As far as I can tell when connect() returns OK, things work. But if connect() fails in any way the addrinfo pointer is immediately pointing somewhere in the system read-only memory with a leak lost. Kernel segfaults squid when it attempt to cleanup anywhere in the read-only areas. Amos > > Thanks, > > > > > Adrian > > ==19601== > ==19601== ERROR SUMMARY: 9353 errors from 5 contexts (suppressed: 8 from > 2) > ==19601== malloc/free: in use at exit: 36,429,514 bytes in 14,790 blocks. > ==19601== malloc/free: 114,225 allocs, 99,435 frees, 115,499,321 bytes > allocated. > ==19601== For counts of detected errors, rerun with: -v > ==19601== searching for pointers to 14,790 not-freed blocks. > ==19601== checked 37,289,184 bytes. > ==19601== > ==19601== > ==19601== 4,104 bytes in 4 blocks are possibly lost in loss record 10 of > 27 > ==19601== at 0x4C21C16: malloc (vg_replace_malloc.c:149) > ==19601== by 0x4EDE17: xmalloc (util.c:506) > ==19601== by 0x4754B8: httpHeaderBuildFieldsInfo (SquidNew.h:54) > ==19601== by 0x46F44F: httpHeaderIdByNameDef (HttpHeader.cc:1707) > ==19601== by 0x40E197: ACLHTTPHeaderData::parse() > (ACLHTTPHeaderData.cc:90) > ==19601== by 0x408D09: ACL::ParseAclLine(ConfigParser&, ACL**) > (acl.cc:153) > ==19601== by 0x421365: parse_line(char*) (cache_cf.cc:888) > ==19601== by 0x424F9F: parseOneConfigFile(char const*, unsigned) > (cache_cf.cc:325) > ==19601== by 0x425990: parseConfigFile(char const*, CacheManager&) > (cache_cf.cc:359) > ==19601== by 0x483337: main (main.cc:1198) > ==19601== > ==19601== > ==19601== 147,648 (110,736 direct, 36,912 indirect) bytes in 2,307 blocks > are definitely lost in loss record 25 of 27 > ==19601== at 0x4C21C16: malloc (vg_replace_malloc.c:149) > ==19601== by 0x4EDE17: xmalloc (util.c:506) > ==19601== by 0x4E9BD9: IPAddress::GetAddrInfo(addrinfo*&, int) const > (SquidNew.h:46) > ==19601== by 0x4C2DAC: comm_connect_addr (comm.cc:1321) > ==19601== by 0x4C3E70: ConnectStateData::connect() (comm.cc:1249) > ==19601== by 0x44F7BA: FwdState::connectStart() (forward.cc:912) > ==19601== by 0x4487AF: EventDispatcher::dispatch() (event.cc:131) > ==19601== by 0x449747: EventLoop::runOnce() (EventLoop.cc:131) > ==19601== by 0x449837: EventLoop::run() (EventLoop.cc:100) > ==19601== by 0x4836F7: main (main.cc:1321) > > > > -- > - Xenion - http://www.xenion.com.au/ - VPS Hosting - Commercial Squid > Support - > - $25/pm entry-level VPSes w/ capped bandwidth charges available in WA - >
