Re: Squid 3.1.0.5 uses memory without bounds

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Fri, 13 Feb 2009 09:20:24 -0700

On 02/13/2009 03:55 AM, Steinar H. Gunderson wrote:
> On Fri, Feb 13, 2009 at 09:01:35PM +1300, Amos Jeffries wrote:
>
>> A few things are still a little hidden due to the compiler optimizations
>> and valgrind behavior, would it be possible that you rebuild squid with
>> --disable-optimizations and also make sure that --enable-valgrind is
>> used. Then generate a new valgrind trace from the rebuild Squid?
>>
>
> Here's a new run. I only let it run for a few minutes, though, so the numbers
> are pretty small (and their relative sizes may not be representable for a
> lon
Hi Steinar,

    Was --enable-valgrind used last time you reconfigured and rebuilt
Squid from scratch? Are you on 32- or 64-bit platform?

Would you be able to run Squid with full debugging enabled? It may take
a few iterations if we need to add debugging statements, but we should
be able to see the leak based on debugging messages alone. If leaks
occur all the time, you would not have to run Squid for a long time.

Developers,

    If valgrind is not lying, we are leaking close handlers for deferred
reads and possibly other close handlers. I do not see any bugs in the
related code, but that does not mean there aren't any. The cbdata escape
into non-C++ world and CbDataList-related manipulations in
DeferredReadManager::delayRead would be my primary suspects even though
I do not see anything seriously broken in that code.

If, somehow, the callback data gets invalidated without CbDataList
knowledge, we may leak the associated object (CbDataList::element). I do
not see how that can happen though.

Thank you,

Alex.
> ==26729== Syscall param write(buf) points to uninitialised byte(s)
> ==26729== at 0x4E33720: __write_nocancel (in /lib/libpthread-2.7.so)
> ==26729== by 0x50F7BC: default_write_method(int, char const*, int) (fd.cc:167)
> ==26729== by 0x5CB5F2: UFSCleanLog::write(StoreEntry const&) (store_dir_ufs.cc:941)
> ==26729== by 0x593778: storeDirWriteCleanLogs (store_dir.cc:475)
> ==26729== by 0x5595DD: SquidShutdown() (main.cc:1686)
> ==26729== by 0x55B259: SquidMain(int, char**) (main.cc:1352)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729== Address 0xcd71201 is 1 bytes inside a block of size 16,384 alloc'd
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x619727: xcalloc (util.c:688)
> ==26729== by 0x5CC26C: UFSSwapDir::writeCleanStart() (store_dir_ufs.cc:883)
> ==26729== by 0x593591: storeDirWriteCleanLogs (store_dir.cc:445)
> ==26729== by 0x5595DD: SquidShutdown() (main.cc:1686)
> ==26729== by 0x55B259: SquidMain(int, char**) (main.cc:1352)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729== Syscall param write(buf) points to uninitialised byte(s)
> ==26729== at 0x4E33720: __write_nocancel (in /lib/libpthread-2.7.so)
> ==26729== by 0x50F7BC: default_write_method(int, char const*, int) (fd.cc:167)
> ==26729== by 0x5CB88B: UFSSwapDir::writeCleanDone() (store_dir_ufs.cc:971)
> ==26729== by 0x593892: storeDirWriteCleanLogs (store_dir.cc:487)
> ==26729== by 0x5595DD: SquidShutdown() (main.cc:1686)
> ==26729== by 0x55B259: SquidMain(int, char**) (main.cc:1352)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729== Address 0xcd71201 is 1 bytes inside a block of size 16,384 alloc'd
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x619727: xcalloc (util.c:688)
> ==26729== by 0x5CC26C: UFSSwapDir::writeCleanStart() (store_dir_ufs.cc:883)
> ==26729== by 0x593591: storeDirWriteCleanLogs (store_dir.cc:445)
> ==26729== by 0x5595DD: SquidShutdown() (main.cc:1686)
> ==26729== by 0x55B259: SquidMain(int, char**) (main.cc:1352)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729== Invalid read of size 1
> ==26729== at 0x5B0F6B: isOpen(int) (comm.cc:284)
> ==26729== by 0x5B1D0A: comm_remove_close_handler(int, RefCount<AsyncCall>&) (comm.cc:1704)
> ==26729== by 0x5B1E15: DeferredReadManager::popHead(CbDataListContainer<DeferredRead>&) (comm.cc:2521)
> ==26729== by 0x5B1EE0: DeferredReadManager::flushReads() (comm.cc:2557)
> ==26729== by 0x5B1F97: DeferredReadManager::~DeferredReadManager() (comm.cc:2479)
> ==26729== by 0x55FCD8: MemObject::~MemObject() (MemObject.cc:129)
> ==26729== by 0x58900F: StoreEntry::destroyMemObject() (store.cc:376)
> ==26729== by 0x589765: destroyStoreEntry(void*) (store.cc:389)
> ==26729== by 0x612AE6: hashFreeItems (hash.c:308)
> ==26729== by 0x591E53: StoreHashIndex::~StoreHashIndex() (store_dir.cc:718)
> ==26729== by 0x593F0A: RefCount<StoreHashIndex>::dereference(StoreHashIndex const*) (RefCount.h:100)
> ==26729== by 0x593F27: RefCount<StoreHashIndex>::~RefCount() (RefCount.h:52)
> ==26729== Address 0x70d8 is not stack'd, malloc'd or (recently) free'd
> ==26729==
> ==26729== Process terminating with default action of signal 11 (SIGSEGV)
> ==26729== Access not within mapped region at address 0x70D8
> ==26729== at 0x5B0F6B: isOpen(int) (comm.cc:284)
> ==26729== by 0x5B1D0A: comm_remove_close_handler(int, RefCount<AsyncCall>&) (comm.cc:1704)
> ==26729== by 0x5B1E15: DeferredReadManager::popHead(CbDataListContainer<DeferredRead>&) (comm.cc:2521)
> ==26729== by 0x5B1EE0: DeferredReadManager::flushReads() (comm.cc:2557)
> ==26729== by 0x5B1F97: DeferredReadManager::~DeferredReadManager() (comm.cc:2479)
> ==26729== by 0x55FCD8: MemObject::~MemObject() (MemObject.cc:129)
> ==26729== by 0x58900F: StoreEntry::destroyMemObject() (store.cc:376)
> ==26729== by 0x589765: destroyStoreEntry(void*) (store.cc:389)
> ==26729== by 0x612AE6: hashFreeItems (hash.c:308)
> ==26729== by 0x591E53: StoreHashIndex::~StoreHashIndex() (store_dir.cc:718)
> ==26729== by 0x593F0A: RefCount<StoreHashIndex>::dereference(StoreHashIndex const*) (RefCount.h:100)
> ==26729== by 0x593F27: RefCount<StoreHashIndex>::~RefCount() (RefCount.h:52)
> ==26729== If you believe this happened as a result of a stack overflow in your
> ==26729== program's main thread (unlikely but possible), you can try to increase
> ==26729== the size of the main thread stack using the --main-stacksize= flag.
> ==26729== The main thread stack size used in this run was 8388608.
> ==26729==
> ==26729== ERROR SUMMARY: 220 errors from 4 contexts (suppressed: 36 from 3)
> ==26729== malloc/free: in use at exit: 74,689,978 bytes in 253,625 blocks.
> ==26729== malloc/free: 1,012,742 allocs, 759,117 frees, 150,985,269 bytes allocated.
> ==26729== For counts of detected errors, rerun with: -v
> ==26729== Use --track-origins=yes to see where uninitialised values come from
> ==26729== searching for pointers to 253,625 not-freed blocks.
> ==26729== checked 70,536,448 bytes.
> ==26729==
> ==26729==
> ==26729== 32 bytes in 1 blocks are still reachable in loss record 1 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x6102548: (within /lib/libc-2.7.so)
> ==26729== by 0x6104272: (within /lib/libc-2.7.so)
> ==26729== by 0x610431F: (within /lib/libc-2.7.so)
> ==26729== by 0x6104708: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 536 (104 direct, 432 indirect) bytes in 2 blocks are definitely lost in loss record 2 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x612E52F: (within /lib/libc-2.7.so)
> ==26729== by 0x612ED06: __nss_database_lookup (in /lib/libc-2.7.so)
> ==26729== by 0x69B131F: ???
> ==26729== by 0x69B23D6: ???
> ==26729== by 0x60ECEA2: getpwnam_r (in /lib/libc-2.7.so)
> ==26729== by 0x60EC85F: getpwnam (in /lib/libc-2.7.so)
> ==26729== by 0x4BCF61: configDoConfigure() (cache_cf.cc:622)
> ==26729== by 0x4C4934: parseConfigFile(char const*) (cache_cf.cc:401)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 144 bytes in 9 blocks are indirectly lost in loss record 3 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x612E119: __nss_lookup_function (in /lib/libc-2.7.so)
> ==26729== by 0x69B133A: ???
> ==26729== by 0x69B23D6: ???
> ==26729== by 0x60ECEA2: getpwnam_r (in /lib/libc-2.7.so)
> ==26729== by 0x60EC85F: getpwnam (in /lib/libc-2.7.so)
> ==26729== by 0x4BCF61: configDoConfigure() (cache_cf.cc:622)
> ==26729== by 0x4C4934: parseConfigFile(char const*) (cache_cf.cc:401)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 288 bytes in 9 blocks are indirectly lost in loss record 4 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x611DEC3: tsearch (in /lib/libc-2.7.so)
> ==26729== by 0x612E0B9: __nss_lookup_function (in /lib/libc-2.7.so)
> ==26729== by 0x69B133A: ???
> ==26729== by 0x69B23D6: ???
> ==26729== by 0x60ECEA2: getpwnam_r (in /lib/libc-2.7.so)
> ==26729== by 0x60EC85F: getpwnam (in /lib/libc-2.7.so)
> ==26729== by 0x4BCF61: configDoConfigure() (cache_cf.cc:622)
> ==26729== by 0x4C4934: parseConfigFile(char const*) (cache_cf.cc:401)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 568 bytes in 1 blocks are still reachable in loss record 5 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x60B4749: (within /lib/libc-2.7.so)
> ==26729== by 0x4EFF07: debugOpenLog(char const*) (debug.cc:264)
> ==26729== by 0x4F0836: _db_init (debug.cc:461)
> ==26729== by 0x55A4AB: mainInitialize() (main.cc:868)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 608 bytes in 2 blocks are still reachable in loss record 6 of 29
> ==26729== at 0x4C22A51: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x61968C: xrealloc (util.c:631)
> ==26729== by 0x5867E5: storeReplAdd (store.cc:1714)
> ==26729== by 0x5AF9B3: storeReplSetup (repl_modules.cc:12)
> ==26729== by 0x586853: storeFsInit (store.cc:1697)
> ==26729== by 0x55AF65: SquidMain(int, char**) (main.cc:1221)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 756 bytes in 189 blocks are still reachable in loss record 7 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x60F6E19: (within /lib/libc-2.7.so)
> ==26729== by 0x60F634B: (within /lib/libc-2.7.so)
> ==26729== by 0x61048EC: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 1,008 bytes in 63 blocks are still reachable in loss record 8 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x60FB1CB: (within /lib/libc-2.7.so)
> ==26729== by 0x6104CF7: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 1,672 bytes in 292 blocks are still reachable in loss record 9 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x60F8356: (within /lib/libc-2.7.so)
> ==26729== by 0x60FAF96: (within /lib/libc-2.7.so)
> ==26729== by 0x6104CF7: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 1,968 bytes in 15 blocks are still reachable in loss record 10 of 29
> ==26729== at 0x4C22A51: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x60F892A: (within /lib/libc-2.7.so)
> ==26729== by 0x60F89D7: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8CDD: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8F3E: (within /lib/libc-2.7.so)
> ==26729== by 0x6104957: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 3,120 bytes in 3 blocks are still reachable in loss record 11 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x6084B87: (within /lib/libc-2.7.so)
> ==26729== by 0x6084C60: __cxa_atexit (in /lib/libc-2.7.so)
> ==26729== by 0x5D6615: __static_initialization_and_destruction_0(int, int) (iostream:77)
> ==26729== by 0x5D662A: global constructors keyed to _ZN12BlockingFile19CBDATA_BlockingFileE (BlockingFile.cc:232)
> ==26729== by 0x61E0B5: (within /usr/local/squid3/sbin/squid)
> ==26729== by 0x49A0C2: (within /usr/local/squid3/sbin/squid)
> ==26729==
> ==26729==
> ==26729== 4,104 bytes in 3 blocks are possibly lost in loss record 12 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6195C3: xmalloc (util.c:506)
> ==26729== by 0x579EB0: operator new[](unsigned long) (SquidNew.h:56)
> ==26729== by 0x5496A7: httpHeaderBuildFieldsInfo (HttpHeaderTools.cc:53)
> ==26729== by 0x548282: httpHeaderInitModule (HttpHeader.cc:288)
> ==26729== by 0x55A61C: mainInitialize() (main.cc:936)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 4,632 bytes in 162 blocks are still reachable in loss record 13 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6104774: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 7,396 bytes in 1,657 blocks are still reachable in loss record 14 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x60F6DDC: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8D92: (within /lib/libc-2.7.so)
> ==26729== by 0x6104957: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 7,872 bytes in 15 blocks are still reachable in loss record 15 of 29
> ==26729== at 0x4C22A51: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x60F8957: (within /lib/libc-2.7.so)
> ==26729== by 0x60F89D7: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8CDD: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8F3E: (within /lib/libc-2.7.so)
> ==26729== by 0x6104957: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 7,872 bytes in 15 blocks are still reachable in loss record 16 of 29
> ==26729== at 0x4C22A51: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x60F8948: (within /lib/libc-2.7.so)
> ==26729== by 0x60F89D7: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8CDD: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8F3E: (within /lib/libc-2.7.so)
> ==26729== by 0x6104957: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 7,872 bytes in 15 blocks are still reachable in loss record 17 of 29
> ==26729== at 0x4C22A51: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x60F8911: (within /lib/libc-2.7.so)
> ==26729== by 0x60F89D7: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8CDD: (within /lib/libc-2.7.so)
> ==26729== by 0x60F8F3E: (within /lib/libc-2.7.so)
> ==26729== by 0x6104957: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x561F1A: mimeInit (mime.cc:461)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 10,240 bytes in 5 blocks are still reachable in loss record 18 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x60FEE09: (within /lib/libc-2.7.so)
> ==26729== by 0x61002D9: (within /lib/libc-2.7.so)
> ==26729== by 0x610118D: regexec (in /lib/libc-2.7.so)
> ==26729== by 0x560DA4: mimeGetEntry(char const*, int) (mime.cc:236)
> ==26729== by 0x560F89: mimeGetContentType (mime.cc:324)
> ==26729== by 0x5614D7: MimeIcon::load() (mime.cc:523)
> ==26729== by 0x562165: mimeInit (mime.cc:497)
> ==26729== by 0x55A66E: mainInitialize() (main.cc:971)
> ==26729== by 0x55B198: SquidMain(int, char**) (main.cc:1313)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 18,528 bytes in 162 blocks are still reachable in loss record 19 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x61047AD: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 18,528 bytes in 162 blocks are still reachable in loss record 20 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x610479A: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 18,528 bytes in 162 blocks are still reachable in loss record 21 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6104494: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 19,552 bytes in 188 blocks are indirectly lost in loss record 22 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6195C3: xmalloc (util.c:506)
> ==26729== by 0x579EE3: operator new(unsigned long) (SquidNew.h:48)
> ==26729== by 0x5BB7BE: CommCbFunPtrCallT<CommCloseCbPtrFun>* commCbCall<CommCloseCbPtrFun>(int, int, char const*, CommCloseCbPtrFun const&) (CommCalls.h:279)
> ==26729== by 0x5B2204: DeferredReadManager::delayRead(DeferredRead const&) (comm.cc:2499)
> ==26729== by 0x55F0C3: MemObject::delayRead(DeferredRead const&) (MemObject.cc:405)
> ==26729== by 0x589C11: StoreEntry::delayAwareRead(int, char*, int, RefCount<AsyncCall>) (store.cc:241)
> ==26729== by 0x5370E5: HttpStateData::maybeReadVirginBody() (http.cc:1332)
> ==26729== by 0x5382C8: HttpStateData::processReplyBody() (http.cc:1301)
> ==26729== by 0x538F74: HttpStateData::readReply(CommIoCbParams const&) (http.cc:1107)
> ==26729== by 0x53BBF5: CommCbMemFunT<HttpStateData, CommIoCbParams>::doDial() (CommCalls.h:163)
> ==26729== by 0x5BE82E: JobDialer::dial(AsyncCall&) (AsyncJob.cc:215)
> ==26729==
> ==26729==
> ==26729== 20,152 bytes in 229 blocks are still reachable in loss record 23 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x60FAF76: (within /lib/libc-2.7.so)
> ==26729== by 0x6104CF7: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 28,096 bytes in 177 blocks are still reachable in loss record 24 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x61044C5: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 34,496 (14,944 direct, 19,552 indirect) bytes in 110 blocks are definitely lost in loss record 25 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6195C3: xmalloc (util.c:506)
> ==26729== by 0x579EE3: operator new(unsigned long) (SquidNew.h:48)
> ==26729== by 0x4DA40A: AsyncCall* asyncCall<CommCbMemFunT<ConnStateData, CommCloseCbParams> >(int, int, char const*, CommCbMemFunT<ConnStateData, CommCloseCbParams> const&) (AsyncCall.h:140)
> ==26729== by 0x4D5862: httpAccept(int, int, ConnectionDetail*, comm_err_t, int, void*) (client_side.cc:2847)
> ==26729== by 0x5BCF27: CommAcceptCbPtrFun::dial() (CommCalls.cc:129)
> ==26729== by 0x5BCC2E: CommCbFunPtrCallT<CommAcceptCbPtrFun>::fire() (CommCalls.h:315)
> ==26729== by 0x4B6B43: AsyncCall::make() (AsyncCall.cc:34)
> ==26729== by 0x4B634E: AsyncCallQueue::fireNext() (AsyncCallQueue.cc:53)
> ==26729== by 0x4B642E: AsyncCallQueue::fire() (AsyncCallQueue.cc:39)
> ==26729== by 0x50A04A: EventLoop::dispatchCalls() (EventLoop.cc:154)
> ==26729== by 0x50A2FF: EventLoop::runOnce() (EventLoop.cc:131)
> ==26729==
> ==26729==
> ==26729== 43,296 bytes in 405 blocks are still reachable in loss record 26 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x4C22AA7: realloc (vg_replace_malloc.c:429)
> ==26729== by 0x6105037: (within /lib/libc-2.7.so)
> ==26729== by 0x61060E2: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 45,312 bytes in 177 blocks are still reachable in loss record 27 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6106073: regcomp (in /lib/libc-2.7.so)
> ==26729== by 0x4BEC6B: parse_refreshpattern(_refresh_t**) (cache_cf.cc:2314)
> ==26729== by 0x4C1EB5: parse_line(char*) (cf_parser.h:1042)
> ==26729== by 0x4C4773: parseOneConfigFile(char const*, unsigned int) (cache_cf.cc:357)
> ==26729== by 0x4C4927: parseConfigFile(char const*) (cache_cf.cc:392)
> ==26729== by 0x55AFA4: SquidMain(int, char**) (main.cc:1232)
> ==26729== by 0x55B3D8: SquidMainSafe(int, char**) (main.cc:1110)
> ==26729== by 0x55B4D1: main (main.cc:1103)
> ==26729==
> ==26729==
> ==26729== 25,598,286 bytes in 245,783 blocks are still reachable in loss record 28 of 29
> ==26729== at 0x4C2291E: malloc (vg_replace_malloc.c:207)
> ==26729== by 0x6195C3: xmalloc (util.c:506)
> ==26729== by 0x579EE3: operator new(unsigned long) (SquidNew.h:48)
> ==26729== by 0x5F21DD: __static_initialization_and_destruction_0(int, int) (ICAPXaction.cc:15)
> ==26729== by 0x5F223E: global constructors keyed to ICAPXaction.cc (ICAPXaction.cc:464)
> ==26729== by 0x61E0B5: (within /usr/local/squid3/sbin/squid)
> ==26729== by 0x49A0C2: (within /usr/local/squid3/sbin/squid)
> ==26729==
> ==26729==
> ==26729== 48,804,500 bytes in 3,612 blocks are still reachable in loss record 29 of 29
> ==26729== at 0x4C206F4: calloc (vg_replace_malloc.c:397)
> ==26729== by 0x619727: xcalloc (util.c:688)
> ==26729== by 0x6125FF: hash_create (hash.c:147)
> ==26729== by 0x568B7D: PconnPool::PconnPool(char const*) (pconn.cc:236)
> ==26729== by 0x5F21F1: __static_initialization_and_destruction_0(int, int) (ICAPXaction.cc:15)
> ==26729== by 0x5F223E: global constructors keyed to ICAPXaction.cc (ICAPXaction.cc:464)
> ==26729== by 0x61E0B5: (within /usr/local/squid3/sbin/squid)
> ==26729== by 0x49A0C2: (within /usr/local/squid3/sbin/squid)
> ==26729==
> ==26729== LEAK SUMMARY:
> ==26729== definitely lost: 15,048 bytes in 112 blocks.
> ==26729== indirectly lost: 19,984 bytes in 206 blocks.
> ==26729== possibly lost: 4,104 bytes in 3 blocks.
> ==26729== still reachable: 74,650,842 bytes in 253,304 blocks.
> ==26729== suppressed: 0 bytes in 0 blocks.
> Segmentation fault
> pannekake:~/orig/squid-3.1.0.5#
>
> /* Steinar */
>
Received on Fri Feb 13 2009 - 16:20:51 MST

This archive was generated by hypermail 2.2.0 : Sat Feb 14 2009 - 12:00:03 MST