Closed
Bug 711675
Opened 9 years ago
Closed 9 years ago
Zombie compartment with any add-on implementing nsIContentPolicy (Adblock Plus, NoScript, GreaseMonkey) on WebM videos
Categories
(Core :: Audio/Video, defect)
Tracking
()
RESOLVED
FIXED
mozilla12
People
(Reporter: epinal99-bugzilla2, Assigned: jaws)
References
()
Details
(Whiteboard: [MemShrink:P2])
Attachments
(2 files)
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111216 Firefox/11.0a1 Build ID: 20111216031140 Steps to reproduce: 1) Update to the latest Nightly and create a new profile 2) Install add-on Adblock Plus 2.0.1 (no blocklist subscription is necessary) 3) Open http://video.webmfiles.org/elephants-dream.webm (WebM video) 4) Open about:memory?verbose in another tab 5) Close http://video.webmfiles.org/elephants-dream.webm 6) Return to about:memory?verbose and hit the "Minimize memory usage" few times Actual results: After hitting several times "Minimize memory usage" and waiting for 15-20 min, compartment(http://video.webmfiles.org/elephants-dream.webm) stays alive as zombie compartment. Expected results: compartment(http://video.webmfiles.org/elephants-dream.webm) should go away. If Nightly is started in safe mode, this compartment is closed normally. ****************** Main Process Explicit Allocations 64,893,719 B (100.0%) -- explicit ├──41,253,422 B (63.57%) -- js │ ├──17,936,384 B (27.64%) -- gc-heap-decommitted │ ├──17,162,062 B (26.45%) -- compartment([System Principal], 0x8577000) │ │ ├───9,940,992 B (15.32%) -- gc-heap │ │ │ ├──3,965,664 B (06.11%) -- objects │ │ │ │ ├──2,939,504 B (04.53%) -- non-function │ │ │ │ └──1,026,160 B (01.58%) -- function │ │ │ ├──2,141,376 B (03.30%) -- arena │ │ │ │ ├──2,093,928 B (03.23%) -- unused │ │ │ │ ├─────38,832 B (00.06%) -- headers │ │ │ │ └──────8,616 B (00.01%) -- padding │ │ │ ├──1,975,176 B (03.04%) -- shapes │ │ │ │ ├────937,224 B (01.44%) -- tree │ │ │ │ ├────670,080 B (01.03%) -- dict │ │ │ │ └────367,872 B (00.57%) -- base │ │ │ ├────937,296 B (01.44%) -- strings │ │ │ ├────876,248 B (01.35%) -- scripts │ │ │ ├─────45,024 B (00.07%) -- type-objects │ │ │ └────────208 B (00.00%) -- xml │ │ ├───1,891,296 B (02.91%) -- object-slots │ │ ├───1,528,208 B (02.35%) -- script-data │ │ ├───1,521,030 B (02.34%) -- string-chars │ │ ├───1,163,752 B (01.79%) -- shapes-extra │ │ │ ├────416,608 B (00.64%) -- tree-tables │ │ │ ├────393,224 B (00.61%) -- compartment-tables │ │ │ ├────236,768 B (00.36%) -- dict-tables │ │ │ └────117,152 B (00.18%) -- tree-shape-kids │ │ ├─────524,288 B (00.81%) -- analysis-temporary │ │ ├─────458,752 B (00.71%) -- mjit-code │ │ ├─────100,496 B (00.15%) -- mjit-data │ │ └──────33,248 B (00.05%) -- type-inference │ │ └──33,248 B (00.05%) -- script-main │ ├───2,715,332 B (04.18%) -- compartment(atoms) │ │ ├──1,724,064 B (02.66%) -- string-chars │ │ ├────991,232 B (01.53%) -- gc-heap │ │ │ ├──870,784 B (01.34%) -- strings │ │ │ └──120,448 B (00.19%) -- arena │ │ │ ├──114,848 B (00.18%) -- unused │ │ │ ├────3,872 B (00.01%) -- headers │ │ │ └────1,728 B (00.00%) -- padding │ │ └─────────36 B (00.00%) -- shapes-extra │ │ └──36 B (00.00%) -- compartment-tables │ ├───2,064,640 B (03.18%) -- runtime │ │ ├──1,048,576 B (01.62%) -- atoms-table │ │ ├────835,584 B (01.29%) -- threads │ │ │ ├──262,144 B (00.40%) -- regexp-code │ │ │ ├──262,144 B (00.40%) -- stack-committed │ │ │ ├──180,224 B (00.28%) -- normal │ │ │ └──131,072 B (00.20%) -- temporary │ │ ├────151,552 B (00.23%) -- runtime-object │ │ └─────28,928 B (00.04%) -- contexts │ ├─────511,564 B (00.79%) -- xpconnect │ ├─────458,752 B (00.71%) -- gc-heap-chunk-admin │ ├─────368,352 B (00.57%) -- gc-heap-chunk-dirty-unused │ ├──────31,344 B (00.05%) -- compartment(moz-nullprincipal:{172f1a4e-91db-4374-bcd6-e5cf077cc5da}) │ │ ├──28,672 B (00.04%) -- gc-heap │ │ │ ├──25,056 B (00.04%) -- arena │ │ │ │ ├──24,848 B (00.04%) -- unused │ │ │ │ ├─────112 B (00.00%) -- headers │ │ │ │ └──────96 B (00.00%) -- padding │ │ │ ├───1,848 B (00.00%) -- shapes │ │ │ │ ├────984 B (00.00%) -- tree │ │ │ │ ├────480 B (00.00%) -- base │ │ │ │ └────384 B (00.00%) -- dict │ │ │ ├───1,504 B (00.00%) -- objects │ │ │ │ ├──1,248 B (00.00%) -- function │ │ │ │ └────256 B (00.00%) -- non-function │ │ │ ├─────136 B (00.00%) -- scripts │ │ │ └─────128 B (00.00%) -- type-objects │ │ ├───1,536 B (00.00%) -- object-slots │ │ ├───1,128 B (00.00%) -- shapes-extra │ │ │ ├────904 B (00.00%) -- compartment-tables │ │ │ ├────160 B (00.00%) -- dict-tables │ │ │ └─────64 B (00.00%) -- tree-shape-kids │ │ └───────8 B (00.00%) -- script-data │ ├───────4,992 B (00.01%) -- compartment(http://video.webmfiles.org/elephants-dream.webm) │ │ ├──4,096 B (00.01%) -- gc-heap │ │ │ ├──4,072 B (00.01%) -- arena │ │ │ │ ├──4,056 B (00.01%) -- unused │ │ │ │ └─────16 B (00.00%) -- headers │ │ │ └─────24 B (00.00%) -- shapes │ │ │ └──24 B (00.00%) -- dict │ │ └────896 B (00.00%) -- shapes-extra │ │ ├──736 B (00.00%) -- compartment-tables │ │ └──160 B (00.00%) -- dict-tables │ └───────────0 B (00.00%) -- gc-heap-chunk-clean-unused ├──13,860,922 B (21.36%) -- heap-unclassified ├───5,733,192 B (08.83%) -- storage │ ├──5,327,640 B (08.21%) -- sqlite │ │ ├──1,747,496 B (02.69%) -- places.sqlite │ │ │ ├──1,516,776 B (02.34%) -- cache-used [3] │ │ │ ├────194,448 B (00.30%) -- stmt-used [3] │ │ │ └─────36,272 B (00.06%) -- schema-used [3] │ │ ├──1,208,232 B (01.86%) -- other │ │ ├────612,560 B (00.94%) -- extensions.sqlite │ │ │ ├──428,640 B (00.66%) -- cache-used │ │ │ ├──176,080 B (00.27%) -- stmt-used │ │ │ └────7,840 B (00.01%) -- schema-used │ │ ├────329,968 B (00.51%) -- webappsstore.sqlite │ │ │ ├──264,384 B (00.41%) -- cache-used │ │ │ ├───61,424 B (00.09%) -- stmt-used │ │ │ └────4,160 B (00.01%) -- schema-used │ │ ├────262,560 B (00.40%) -- chromeappsstore.sqlite │ │ │ ├──198,576 B (00.31%) -- cache-used │ │ │ ├───59,824 B (00.09%) -- stmt-used │ │ │ └────4,160 B (00.01%) -- schema-used │ │ ├────260,232 B (00.40%) -- addons.sqlite │ │ │ ├──231,216 B (00.36%) -- cache-used │ │ │ ├───22,784 B (00.04%) -- stmt-used │ │ │ └────6,232 B (00.01%) -- schema-used │ │ ├────178,664 B (00.28%) -- cookies.sqlite │ │ │ ├──165,408 B (00.25%) -- cache-used │ │ │ ├───11,360 B (00.02%) -- stmt-used │ │ │ └────1,896 B (00.00%) -- schema-used │ │ ├────161,864 B (00.25%) -- urlclassifier3.sqlite │ │ │ ├───92,416 B (00.14%) -- stmt-used │ │ │ ├───66,696 B (00.10%) -- cache-used │ │ │ └────2,752 B (00.00%) -- schema-used │ │ ├────144,024 B (00.22%) -- content-prefs.sqlite │ │ │ ├──132,504 B (00.20%) -- cache-used │ │ │ ├────9,008 B (00.01%) -- stmt-used │ │ │ └────2,512 B (00.00%) -- schema-used │ │ ├────108,264 B (00.17%) -- downloads.sqlite │ │ │ ├───99,600 B (00.15%) -- cache-used │ │ │ ├────6,832 B (00.01%) -- stmt-used │ │ │ └────1,832 B (00.00%) -- schema-used │ │ ├────106,784 B (00.16%) -- permissions.sqlite │ │ │ ├───99,600 B (00.15%) -- cache-used │ │ │ ├────5,888 B (00.01%) -- stmt-used │ │ │ └────1,296 B (00.00%) -- schema-used │ │ ├────104,360 B (00.16%) -- signons.sqlite │ │ │ ├───99,600 B (00.15%) -- cache-used │ │ │ ├────2,952 B (00.00%) -- schema-used │ │ │ └────1,808 B (00.00%) -- stmt-used │ │ └────102,632 B (00.16%) -- search.sqlite │ │ ├───99,600 B (00.15%) -- cache-used │ │ ├────1,792 B (00.00%) -- stmt-used │ │ └────1,240 B (00.00%) -- schema-used │ └────405,552 B (00.62%) -- prefixset │ └──405,552 B (00.62%) -- all ├───1,290,132 B (01.99%) -- layout │ ├────669,936 B (01.03%) -- shell(chrome://browser/content/browser.xul) │ │ ├──446,256 B (00.69%) -- arenas │ │ ├──223,456 B (00.34%) -- styledata │ │ └──────224 B (00.00%) -- textruns │ ├────528,420 B (00.81%) -- shell(about:memory?verbose) │ │ ├──274,016 B (00.42%) -- arenas [2] │ │ ├──131,684 B (00.20%) -- textruns [2] │ │ └──122,720 B (00.19%) -- styledata [2] │ └─────91,776 B (00.14%) -- shell(resource://gre-resources/hiddenWindow.html) │ ├──61,264 B (00.09%) -- styledata │ └──30,512 B (00.05%) -- arenas ├─────942,104 B (01.45%) -- xpti-working-set ├─────891,397 B (01.37%) -- startup-cache ├─────696,288 B (01.07%) -- images │ ├──684,008 B (01.05%) -- chrome │ │ ├──684,008 B (01.05%) -- used │ │ │ ├──684,008 B (01.05%) -- uncompressed-heap │ │ │ ├────────0 B (00.00%) -- raw │ │ │ └────────0 B (00.00%) -- uncompressed-nonheap │ │ └────────0 B (00.00%) -- unused │ │ ├──0 B (00.00%) -- raw │ │ ├──0 B (00.00%) -- uncompressed-heap │ │ └──0 B (00.00%) -- uncompressed-nonheap │ └───12,280 B (00.02%) -- content │ ├──12,280 B (00.02%) -- used │ │ ├───8,736 B (00.01%) -- uncompressed-heap │ │ ├───3,544 B (00.01%) -- raw │ │ └───────0 B (00.00%) -- uncompressed-nonheap │ └───────0 B (00.00%) -- unused │ ├──0 B (00.00%) -- raw │ ├──0 B (00.00%) -- uncompressed-heap │ └──0 B (00.00%) -- uncompressed-nonheap ├─────171,662 B (00.26%) -- dom │ └──171,662 B (00.26%) -- window-objects │ └──171,662 B (00.26%) -- active │ ├──161,457 B (00.25%) -- top=1 (inner=2) │ │ ├──156,924 B (00.24%) -- inner-window(id=2, uri=chrome://browser/content/browser.xul) │ │ ├────1,511 B (00.00%) -- inner-window(id=10, uri=about:blank) │ │ ├────1,511 B (00.00%) -- inner-window(id=12, uri=about:blank) │ │ └────1,511 B (00.00%) -- inner-window(id=11, uri=about:blank) │ ├────6,047 B (00.01%) -- top=39 (inner=77) │ │ ├──5,647 B (00.01%) -- inner-window(id=77, uri=about:memory?verbose) │ │ └────400 B (00.00%) -- inner-window(id=76, uri=[system]) │ ├────2,400 B (00.00%) -- outer-windows [6] │ └────1,758 B (00.00%) -- top=3 (inner=4) │ └──1,758 B (00.00%) -- inner-window(id=4, uri=resource://gre-resources/hiddenWindow.html) ├──────39,000 B (00.06%) -- cycle-collector ├──────15,056 B (00.02%) -- gfx │ └──15,056 B (00.02%) -- textrun-word-cache ├─────────544 B (00.00%) -- history-links-hashtable └───────────0 B (00.00%) -- spell-check Other Measurements 480,484 B -- gfx-d2d-surfacecache 13,346,228 B -- gfx-d2d-surfacevram 724,244 B -- gfx-surface-image 0 B -- gfx-surface-win32 33,290,802 B -- heap-allocated 39,141,376 B -- heap-committed 14.93% -- heap-committed-fragmentation 2,883,584 B -- heap-dirty 30,671,372 B -- heap-unallocated 2 -- js-compartments-system 2 -- js-compartments-user 29,360,128 B -- js-gc-heap 2,237,680 B -- js-gc-heap-arena-unused 0 B -- js-gc-heap-chunk-clean-unused 368,352 B -- js-gc-heap-chunk-dirty-unused 17,936,384 B -- js-gc-heap-decommitted 69.96% -- js-gc-heap-unused-fraction 524,288 B -- js-total-analysis-temporary 559,248 B -- js-total-mjit 5,860,000 B -- js-total-objects 2,404,600 B -- js-total-scripts 3,025,644 B -- js-total-shapes 5,053,174 B -- js-total-strings 78,400 B -- js-total-type-inference 150,274,048 B -- private 213,417,984 B -- resident 490,668,032 B -- vsize
Comment 1•9 years ago
|
||
That's a tiny compartment. All it has is 920 bytes worth of shapes and then some internal fragmentation. Very odd. │ ├───────4,992 B (00.01%) -- compartment(http://video.webmfiles.org/elephants-dream.webm) │ │ ├──4,096 B (00.01%) -- gc-heap │ │ │ ├──4,072 B (00.01%) -- arena │ │ │ │ ├──4,056 B (00.01%) -- unused │ │ │ │ └─────16 B (00.00%) -- headers │ │ │ └─────24 B (00.00%) -- shapes │ │ │ └──24 B (00.00%) -- dict │ │ └────896 B (00.00%) -- shapes-extra │ │ ├──736 B (00.00%) -- compartment-tables │ │ └──160 B (00.00%) -- dict-tables
Whiteboard: [MemShrink]
I tested with another WebM video (http://people.opera.com/shwetankd/webm/sunflower.webm), same result with the same memory values for this tiny zombie compartment! │ ├───────4,992 B (00.01%) -- compartment(http://people.opera.com/shwetankd/webm/sunflower.webm) │ │ ├──4,096 B (00.01%) -- gc-heap │ │ │ ├──4,072 B (00.01%) -- arena │ │ │ │ ├──4,056 B (00.01%) -- unused │ │ │ │ └─────16 B (00.00%) -- headers │ │ │ └─────24 B (00.00%) -- shapes │ │ │ └──24 B (00.00%) -- dict │ │ └────896 B (00.00%) -- shapes-extra │ │ ├──736 B (00.00%) -- compartment-tables │ │ └──160 B (00.00%) -- dict-tables
Comment 3•9 years ago
|
||
Confirming. However, this isn't really an Adblock Plus issue - the same leak can be observed with a minimal nsIContentPolicy implementation. This is probably related to bug 708431.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: Zombie compartment with Adblock Plus 2.0.1 on http://video.webmfiles.org/elephants-dream.webm (WebM video) → Zombie compartment with any add-on implementing nsIContentPolicy (Adblock Plus, NoScript, GreaseMonkey) on WebM videos
Comment 4•9 years ago
|
||
This extension implements nsIContentPolicy but doesn't do anything beyond that - only logs the calls. The issue can be reproduced with this extension as well.
Updated•9 years ago
|
Whiteboard: [MemShrink] → [MemShrink:P2]
A patch has been released in FF12 about Bug 708431, it fixes an issue with nsIContentPolicy too. So I tested the latest nightly (Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0a1) Gecko/20120109 Firefox/12.0a1) only with add-on ABP and it appears the current bug is fixed too, no more zombie compartment. So I guess comment #3 was true. Anyway both Bug 708431 & Bug 711675 are still present in FF11 (Aurora). In addition, I would like to add the zombie compartment can be observed with various video/audio formats, not only WebM: [*].oga: http://upload.wikimedia.org/wikipedia/en/a/a9/Gordonwilson_bbc_interview_1987.oga [*].ogg: http://www.html5rocks.com/en/tutorials/audio/quick/test.ogg [*].ogv: http://www.html5rocks.com/en/tutorials/video/basics/Chrome_ImF.ogv [*].webm: http://video.webmfiles.org/elephants-dream.webm (restart the browser to test each format one after the other)
Comment 6•9 years ago
|
||
Thanks for confirming, Loic!
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Updated•9 years ago
|
Target Milestone: --- → mozilla12
Updated•9 years ago
|
Assignee: nobody → jwein
You need to log in
before you can comment on or make changes to this bug.
Description
•