- From: Vic Bancroft <bancroft@america.net>
- Date: Sun, 23 Jan 2005 16:05:12 -0500
- To: Sandesh Anvekar <sanvekar@controlnet.co.in>
- CC: www-lib@w3.org
Sandesh Anvekar wrote: > for (;;) > { > request = HTRequest_new(); > HTRequest_addConnection(request, "close", ""); > HTRequest_setOutputFormat(request,WWW_SOURCE); > /* Start the load */ > chunk = HTLoadToChunk(getme, request); > if (chunk) > HTRequest_setContext(request,chunk); > /* Go into the event loop... */ > //HTEventList_loop(request); > sleep(1); > } > > This fragment allocates memory and never frees it. Notice that in the library function, HTRequest_new/0 defined in HTReqMan.c there is a call to HT_CALLOC/2 . . . You could move the call to HTRequest_new/0 outside the loop and make a call to HTRequest_clear/1 or just add HTRequest_delete/1 at the bottom of your loop. The intent of using the HTRequest_clear/1 call would be avoidance of somewhat expensive create and tear down of memory structures. >BUT the strange part of this is that it happens only if I get 200 as the response. If I request the non existing page ie 404 this behaviour does not repeat. Also this behaviour does not repeat for HTTP requests. > > Interesting, I imagine there is some cleanup of structures for the error situation, or perhaps the easily noticable memory consumption is never reached . . . I will try some profiling on the Robot example, now that it can make https requests and see if a leakage manifests there as well. BTW, under fedora core 3 which uses automake version 1.9.2 release 3, there are warnings about all underquoted calls to |AC_DEFUN. |It also seems that something in this new configuration chain that breaks modules/md5, e.g., make[3]: Entering directory `/home/bancroft/src/libwww/modules/md5' if /bin/sh ../../libtool --mode=compile --tag=CC gcc -DHAVE_CONFIG_H -I. -I. -I../.. -g -O2 -Wall -MT md5.lo -MD -MP -MF ".deps/md5.Tpo" -c -o md5.lo md5.c; \ then mv -f ".deps/md5.Tpo" ".deps/md5.Plo"; else rm -f ".deps/md5.Tpo"; exit 1; fi libtool: unrecognized option `--tag=CC' Try `libtool --help' for more information. make[3]: *** [md5.lo] Error 1 make[3]: Leaving directory `/home/bancroft/src/libwww/modules/md5' make[2]: *** [install-recursive] Error 1 make[2]: Leaving directory `/home/bancroft/src/libwww/modules' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory `/home/bancroft/src/libwww' make: *** [install] Error 2 My workaround was to simply change to that directory and repeat the compile step without the --tag=CC option, $ /bin/sh ../../libtool --mode=link gcc -g -O2 -Wall -o libmd5.la -rpath /usr/local/lib -version-info "1:0:1" md5.lo -ldl -L/usr/local/ssl/lib -lssl -lcrypto mkdir .libs rm -fr .libs/libmd5.la .libs/libmd5.* .libs/libmd5.* ar cru .libs/libmd5.a md5.o ranlib .libs/libmd5.a creating libmd5.la (cd .libs && rm -f libmd5.la && ln -s ../libmd5.la libmd5.la) Has anyone else encountered this ? more, l8r, v -- america sig
Received on Sunday, 23 January 2005 21:05:44 UTC