Last Comment Bug 791593 - XSL transform causes zombie compartment
: XSL transform causes zombie compartment
Status: NEW
[MemShrink:P2]
: mlk, testcase
Product: Core
Classification: Components
Component: XSLT (show other bugs)
: 16 Branch
: x86_64 Linux
: -- normal (vote)
: ---
Assigned To: John Schoenick [:johns]
:
Mentors:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-09-16 16:14 PDT by Nicholas Nethercote [:njn]
Modified: 2012-09-18 16:23 PDT (History)
7 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
test case (1.35 KB, application/zip)
2012-09-16 16:14 PDT, Nicholas Nethercote [:njn]
no flags Details

Description Nicholas Nethercote [:njn] 2012-09-16 16:14:15 PDT
Created attachment 661652 [details]
test case

[This bug report came via my blog:
http://blog.mozilla.org/nnethercote/2012/09/05/memshrink-progress-week-63-64/comment-page-1/#comment-7546.  I can reproduce it.]

The issue I have seen is with compartments being leaked by xsl transformed documents. A reduced example of this with all add-ons disabled …

1) Initially about:compartments?verbose reports no user compartments

2) When the main.xml file is loaded in a tab, about:compartments reports the user compartments…

file:///C:/DirPath/HTML2/main.xml
file:///C:/DirPath/HTML2/main.xml, file:///C:/DirPath/HTML2/object1.html [4]

I.e. the main.xml document and 4 compartments for 2 html objects displayed by the transformed doc … possibly outer and inner compartments? for each of the 2 objects … the transformed doc has a body containing 2 divs and each div contains 1 object, the same simple html doc is used for both objects

3) After deleting the main.xml tab, about:compartments reports the user compartments…

file:///C:/DirPath/HTML2/main.xml, file:///C:/DirPath/HTML2/object1.html [2]

I.e. 2 compartments for the loaded objects have not been cleaned up. The main.xml compartment and 2 of the object compartments have been cleaned.

Additional info from about:memory

¦ +—–115,536 B (00.31%) — compartment(file:///C:/DirPath/HTML2/main.xml, file:///C:/DirPath/HTML2/object1.html)
¦ ¦ +—98,304 B (00.26%) — gc-heap
¦ ¦ ¦ +–71,856 B (00.19%) — arena/unused [2]
¦ ¦ ¦ +–26,448 B (00.07%) — sundries [2]
¦ ¦ +—17,232 B (00.05%) — other-sundries [2]

and under window-objects

¦ +——3,544 B (00.01%) — top(file:///C:/DirPath/HTML2/object1.html, id=23)/active/window(file:///C:/DirPath/HTML2/object1.html)/dom [2]
¦ +——3,544 B (00.01%) — top(file:///C:/DirPath/HTML2/object1.html, id=21)/active/window(file:///C:/DirPath/HTML2/object1.html)/dom [2]
¦ +——–896 B (00.00%) — top(none)/detached/window(file:///C:/DirPath/HTML2/main.xml)/dom [2]

There are no ghost windows reported.

Each time the main.xml document is loaded and the tab deleted, further compartments are generated and leaked.

The leak only occurs when the xsl transform is used. E.g if a main.html doc is used instead of the main.xml, no leaked compartments are observed.
Comment 1 Justin Lebar (not reading bugmail) 2012-09-16 17:08:50 PDT
Peter, do you still actively own XSLT?
Comment 2 Kyle Huey [:khuey] (khuey@mozilla.com) 2012-09-17 22:32:29 PDT
I see an actual shutdown leak here.

Note You need to log in before you can comment on or make changes to this bug.