From: SourceForge.net <no...@so...> - 2006-06-12 09:40:00
|
Bugs item #1504500, was opened at 2006-06-11 14:57 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1504500&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 40. Memory Allocation Group: None Status: Pending Resolution: Invalid Priority: 5 Submitted By: Erik Leunissen (eriklns) Assigned to: Jeffrey Hobbs (hobbs) Summary: slave interp evaluation leaks memory Initial Comment: When an arbitrary script is evaluated by a slave interpreter, memory leaks according to valgrind. Attached you find two files used to reproduce this leak: - memtest This executable shell script drives the test. It runs tclsh (under valgrind) with a scriptfile argument, redirecting stderr to valgrind.out - memtest.tcl The Tcl script evaluating an arbitrary script in a slave interp The file valgrind.out holds the findings of valgrind run on my computer, using Linux, Tcl8.4.13 ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2006-06-12 02:39 Message: Logged In: NO I was only focused on the leak which was categorized as "definitely lost" in valgrinds output (you attributed that one to the stdout channel). I tested it again under valgrind with some 10 cycles (as you indicated), and you are right: valgrind reports the same leak with the same size as in the case of a single cycle. So indeed, this must be a one time memory leak. I understand that this leak is purposely left for the OS to clean up ... OK, no more questions for me. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-06-11 15:53 Message: Logged In: YES user_id=148712 I do not see any *real* leak there. Tcl does leave some memory to be cleaned by the os on exit, and that is what you are seeing. In this case, the main interp's execution environment and the stdout channel. In order to test real leaks in slave interps, you may try to run the following in a shell, checking the memory reqs with top in a different shell: while 1 { interp create slave slave eval { # whatever you want here; note that writing # to the console will increase the corresponding # memory reqs until the scrollback buffer is full } interp delete slave } If there is a leak, the memory should keep increasing. It doesn't here. Assigning to hobbs for a second opinion. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1504500&group_id=10894 |