Tcl Source Code

View Ticket
Login
Ticket UUID: 2871908
Title: leaking two hashtables and some data in tclObj.c
Type: Bug Version: obsolete: 8.5.7
Submitter: mistachkin Created on: 2009-10-02 16:59:45
Subsystem: 10. Objects Assigned To: andreas_kupries
Priority: 9 Immediate Severity:
Status: Closed Last Modified: 2009-10-18 18:23:16
Resolution: Fixed Closed By: andreas_kupries
    Closed on: 2009-10-07 23:12:32
Description:
The lineCLPtr hashtable structure is being leaked.  The entire objThreadMap hashtable and its contained data are also being leaked.

This bug also applies to the 8.5 branch.
User Comments: mistachkin added on 2009-10-18 18:23:16:
Corrected some issues with this in both HEAD and core-8-5-branch.

mistachkin added on 2009-10-09 03:31:47:
It would be very hard to duplicate the leaks from the existing test suite since the leaks are per-thread and are only really seen after Tcl_Finalize is called.  Just ran my tests here and the leaks appear to be fixed in HEAD.  Thanks.

andreas_kupries added on 2009-10-08 06:12:32:

allow_comments - 1

Applied patch to head and 8.5 branches. Please check in your environ that the leaks are gone.
My system passes testsuite before and after.

andreas_kupries added on 2009-10-08 05:43:53:
Review patch ... Looks ok, after some thinking.
Agreed, applies to 8.5 as well. 8.5 actually has the whole TclFinalizeThreadObjects() function missing.

Patch applies ok, modulo ChangeLog entry.

I see no test cases however. How can I check the leak from the testsuite ?

mistachkin added on 2009-10-05 04:46:50:
Attached initial patch.  Sorry for the previous blank comment, SF UI is acting weird.

mistachkin added on 2009-10-05 04:45:46:

File Added - 345329: leaks.diff

mistachkin added on 2009-10-05 04:44:33:


ferrieux added on 2009-10-03 02:57:54:
Can you describe the code path you are considering ?
Are you calling Tcl_Exit or Tcl_Finalize ?
Remember that since the exit reform of 2001201, Tcl_Exit only calls the finalizer of the calling thread. Another way of missing a finalizer in Tcl_Exit, even if no extra threads are created, is the test on currentAppExitPtr. Can you say which scenario you are reporting ?

Attachments: