Tcl Source Code

Artifact [35cdd7bbb8]
Login

Artifact 35cdd7bbb80237481497890f7ad88dc421d30532:

Ticket change [35cdd7bbb8] - Ticket [3493120fff] Thread extension, memory leak after thread exit status still Open with 8 other changes by sebres 2014-04-22 13:28:58.
D 2014-04-22T13:28:58.388
J assignee aku
J closer nobody
J comment Version:\s8.5.11\s(original\sand\scurrent\score-8-5-branch)\r\nPlatform:\sWindows\s(linux\snot\syet\stested)\r\n\r\nAfter\sexiting\sof\sthreads,\sthey\sleave\sa\smemory\sleak.\s\r\nConsequence\sof\sthat:\swe\scannot\suse\stechniques\ssuch\sas\s'idletime'\s(to\srelease\ssome\ssystem\sresources,\sfor\sexample\slarge\stcl\scodes\sare\sno\smore\sused,\setc,\setc.).\r\n\r\nAfter\srun\sof\sfollowing\sscript\sI\shave\slost\s100MB\sof\smemory.\sIn\sfact,\snothing\swill\sbe\sdone\shere,\sexcept\sthreads\sare\screated\sand\sexited.\r\n\r\nTest\sscript:\r\n\r\n#\sfor\stest\spurposes\s-\sto\swait\sfor\sthreads\sexited\s:\r\ntsv::set\stestth\scount\s0\r\n#\sthis\screate\sonce\sa\sthread\spool,\sand\sgenerate\sjobs\s:\r\nproc\stest\s{}\s{\r\n\s\s#\screate\sa\sthread\spool\sif\snot\syet\salready\sexists\s:\r\n\s\sif\s{![llength\s[tpool::names]]}\s{\r\n\s\s\s\stpool::create\s-minworkers\s0\s-maxworkers\s5\s-idletime\s1\s-initcmd\s{\r\n\s\s\s\s\s\s#\s+\s1\sthread\r\n\s\s\s\s\s\stsv::set\stestth\scount\s[expr\s{[tsv::get\stestth\scount]\s+\s1}];\sputs\s[thread::id]init!!!!!\r\n\s\s\s\s}\s-exitcmd\s{\r\n\s\s\s\s\s\s#\s-\s1\sthread\r\n\s\s\s\s\s\stsv::set\stestth\scount\s[expr\s{[tsv::get\stestth\scount]\s-\s1}];\sputs\s[thread::id]!!!!!exit\r\n\s\s\s\s}\r\n\s\s}\r\n\s#\sgenerate\sjobs\suntil\s5\sthreads\sare\screated\s:\r\n\s\swhile\s{[tsv::get\stestth\scount]\s<\s5}\s{\r\n\s\s\s\stpool::post\s-detached\s-nowait\s[lindex\s[tpool::names]\s0]\s{\r\n\s\s\s\s\s\sputs\s[thread::id]!!job;\stsv::array\sunset\stestthcount\s[thread::id]\r\n\s\s\s\s}\r\n\s\s\s\supdate\r\n\s\s}\r\n}\r\n#\srepeat\stest\s100\stimes,\sin\saddition\swaiting\sfor\sthe\s\r\n#\sthreads\sto\sbe\sfinished\seach\siteration\s:\r\ntime\s{test;\swhile\s{[tsv::get\stestth\scount]}\s{after\s10};}\s100
J icomment Leak\sfound\sand\sfixed\swithin\s[c251d61424]\r\nTclpFreeAllocCache\s(if\scalled\swith\sptr\s!=\sNULL)\shas\sa\scomment:\s"Called\sby\sus\sin\sTclpFinalizeThreadData\swhen\sa\sthread\sexits\s..."\r\nBut\suntil\snow\sit\swas\sreally\snever\scalled.\r\nAfter\sfixing,\sno\sbyte\sis\slost\sduring\stest.
J login sebres
J mimetype text/plain
J severity Minor
J username sebres
K 3493120fffffffffffffffffffffffffffffffff
U sebres
Z c7c8ebace4561d4f58e019acaf908cee