Closed Bug 674919 Opened 13 years ago Closed 13 years ago

TBPL after being open for 2 days is consuming ~200MB of memory

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: ehsan.akhgari, Unassigned)

Details

(Whiteboard: [MemShrink:P2])

│    ├──218,261,625 B (15.82%) -- compartment(http://tbpl.mozilla.org/?tree=Mozilla-Inbound)
│    │  ├──161,996,800 B (11.74%) -- gc-heap
│    │  │  ├───51,697,336 B (03.75%) -- objects
│    │  │  ├───51,401,344 B (03.73%) -- arena-unused
│    │  │  ├───49,102,816 B (03.56%) -- strings
│    │  │  ├────7,712,640 B (00.56%) -- shapes
│    │  │  ├────1,133,464 B (00.08%) -- arena-padding
│    │  │  ├──────949,200 B (00.07%) -- arena-headers
│    │  │  └────────────0 B (00.00%) -- xml
│    │  ├───31,662,360 B (02.29%) -- object-slots
│    │  ├───16,268,752 B (01.18%) -- string-chars
│    │  ├────4,591,616 B (00.33%) -- mjit-code
│    │  ├────2,583,245 B (00.19%) -- scripts
│    │  ├──────815,612 B (00.06%) -- mjit-data
│    │  ├──────212,168 B (00.02%) -- tjit-data
│    │  │      ├──148,000 B (00.01%) -- allocators-reserve
│    │  │      └───64,168 B (00.00%) -- allocators-main
│    │  └──────131,072 B (00.01%) -- tjit-code

There's something leaking in TBPL.  This is from a TBPL tab which was left open for a couple of days, without me even using it.
Note that this is the first time that I'm seeing a web page using more memory than a system compartment.  This was the biggest memory hog in my profile among 50+ tabs.
(In reply to comment #1)
> Note that this is the first time that I'm seeing a web page using more
> memory than a system compartment.

Really?  Right now for me the system compartment is taking 35MB and gmail is taking 65MB.  But I don't have any Jetpack-based add-ons installed...
Some basic info here would be good:  any add-ons installed?  There was something else I was going to ask as well, but I forget now.
Assignee: general → ehsan
I'm going to run another instance of the browser using a clean profile with two TBPL app tabs to see if I can reproduce this bug there too.
I could reproduce it in a new profile with no add-ons installed:

Main Process

Explicit Allocations
626,970,416 B (100.0%) -- explicit
├──274,728,171 B (43.82%) -- js
│  ├──177,512,530 B (28.31%) -- compartment(http://tbpl.mozilla.org/)
│  │  ├──115,601,408 B (18.44%) -- gc-heap
│  │  │  ├───51,377,640 B (08.19%) -- objects
│  │  │  ├───45,184,832 B (07.21%) -- strings
│  │  │  ├───10,516,912 B (01.68%) -- arena-unused
│  │  │  ├────7,106,112 B (01.13%) -- shapes
│  │  │  ├──────738,560 B (00.12%) -- arena-padding
│  │  │  └──────677,352 B (00.11%) -- arena-headers
│  │  ├───29,124,296 B (04.65%) -- object-slots
│  │  ├───20,326,166 B (03.24%) -- string-chars
│  │  ├────5,644,288 B (00.90%) -- mjit-code
│  │  ├────2,799,340 B (00.45%) -- scripts
│  │  ├────2,543,456 B (00.41%) -- property-tables
│  │  ├────1,124,288 B (00.18%) -- mjit-data
│  │  ├──────218,216 B (00.03%) -- tjit-data
│  │  │      ├──148,000 B (00.02%) -- allocators-reserve
│  │  │      └───70,216 B (00.01%) -- allocators-main
│  │  └──────131,072 B (00.02%) -- tjit-code
│  ├───43,065,856 B (06.87%) -- gc-heap-chunk-dirty-unused
│  ├───27,016,518 B (04.31%) -- compartment(atoms)
│  │   ├──20,991,302 B (03.35%) -- string-chars
│  │   └───6,025,216 B (00.96%) -- gc-heap
│  │       ├──5,714,560 B (00.91%) -- strings
│  │       ├────250,560 B (00.04%) -- arena-unused
│  │       ├─────35,304 B (00.01%) -- arena-headers
│  │       └─────24,792 B (00.00%) -- arena-padding
│  ├───15,301,463 B (02.44%) -- compartment([System Principal], 0x105813400)
│  │   ├───8,130,560 B (01.30%) -- gc-heap
│  │   │   ├──4,463,392 B (00.71%) -- objects
│  │   │   ├──2,826,240 B (00.45%) -- shapes
│  │   │   ├────370,240 B (00.06%) -- strings
│  │   │   ├────295,288 B (00.05%) -- arena-unused
│  │   │   ├────127,200 B (00.02%) -- arena-padding
│  │   │   ├─────47,640 B (00.01%) -- arena-headers
│  │   │   └────────560 B (00.00%) -- xml
│  │   ├───2,928,551 B (00.47%) -- scripts
│  │   ├───1,900,544 B (00.30%) -- mjit-code
│  │   ├─────906,288 B (00.14%) -- property-tables
│  │   ├─────581,184 B (00.09%) -- object-slots
│  │   ├─────272,648 B (00.04%) -- tjit-data
│  │   │     ├──148,000 B (00.02%) -- allocators-reserve
│  │   │     └──124,648 B (00.02%) -- allocators-main
│  │   ├─────234,300 B (00.04%) -- string-chars
│  │   ├─────216,316 B (00.03%) -- mjit-data
│  │   └─────131,072 B (00.02%) -- tjit-code
│  ├────8,388,608 B (01.34%) -- stack
│  ├────3,042,816 B (00.49%) -- gc-heap-chunk-admin
│  ├──────372,842 B (00.06%) -- compartment(about:home)
│  │      ├──270,336 B (00.04%) -- gc-heap
│  │      │  ├──115,088 B (00.02%) -- objects
│  │      │  ├──109,440 B (00.02%) -- shapes
│  │      │  ├───39,736 B (00.01%) -- arena-unused
│  │      │  ├────4,328 B (00.00%) -- arena-padding
│  │      │  ├────1,584 B (00.00%) -- arena-headers
│  │      │  └──────160 B (00.00%) -- strings
│  │      ├───65,536 B (00.01%) -- mjit-code
│  │      ├───16,616 B (00.00%) -- property-tables
│  │      ├───14,672 B (00.00%) -- object-slots
│  │      ├────5,448 B (00.00%) -- scripts
│  │      └──────234 B (00.00%) -- string-chars
│  ├───────27,538 B (00.00%) -- compartment(moz-nullprincipal:{9d7b2689-02e0-3d4b-bfb8-ed9539ade448})
│  │       ├──24,576 B (00.00%) -- gc-heap
│  │       │  ├──15,176 B (00.00%) -- arena-unused
│  │       │  ├───5,384 B (00.00%) -- objects
│  │       │  ├───3,520 B (00.00%) -- shapes
│  │       │  ├─────352 B (00.00%) -- arena-padding
│  │       │  └─────144 B (00.00%) -- arena-headers
│  │       ├───2,432 B (00.00%) -- object-slots
│  │       ├─────304 B (00.00%) -- property-tables
│  │       └─────226 B (00.00%) -- scripts
│  └────────────0 B (00.00%) -- gc-heap-chunk-clean-unused
├──266,122,561 B (42.45%) -- heap-unclassified
├───45,107,840 B (07.19%) -- storage
│   └──45,107,840 B (07.19%) -- sqlite
│      ├──38,400,928 B (06.12%) -- urlclassifier3.sqlite
│      │  ├──38,299,080 B (06.11%) -- cache-used
│      │  ├──────97,600 B (00.02%) -- stmt-used
│      │  └───────4,248 B (00.00%) -- schema-used
│      ├───2,471,040 B (00.39%) -- places.sqlite
│      │   ├──2,016,776 B (00.32%) -- cache-used [4]
│      │   ├────376,504 B (00.06%) -- stmt-used [4]
│      │   └─────77,760 B (00.01%) -- schema-used [4]
│      ├───1,269,072 B (00.20%) -- other
│      ├─────615,440 B (00.10%) -- extensions.sqlite
│      │     ├──429,720 B (00.07%) -- cache-used
│      │     ├──174,480 B (00.03%) -- stmt-used
│      │     └───11,240 B (00.00%) -- schema-used
│      ├─────349,808 B (00.06%) -- addons.sqlite
│      │     ├──297,640 B (00.05%) -- cache-used
│      │     ├───45,248 B (00.01%) -- stmt-used
│      │     └────6,920 B (00.00%) -- schema-used
│      ├─────339,472 B (00.05%) -- signons.sqlite
│      │     ├──330,664 B (00.05%) -- cache-used
│      │     ├────4,472 B (00.00%) -- schema-used
│      │     └────4,336 B (00.00%) -- stmt-used
│      ├─────336,392 B (00.05%) -- webappsstore.sqlite
│      │     ├──265,048 B (00.04%) -- cache-used
│      │     ├───64,984 B (00.01%) -- stmt-used
│      │     └────6,360 B (00.00%) -- schema-used
│      ├─────335,608 B (00.05%) -- chromeappsstore.sqlite
│      │     ├──265,064 B (00.04%) -- cache-used
│      │     ├───64,184 B (00.01%) -- stmt-used
│      │     └────6,360 B (00.00%) -- schema-used
│      ├─────278,312 B (00.04%) -- content-prefs.sqlite
│      │     ├──264,648 B (00.04%) -- cache-used
│      │     ├────9,632 B (00.00%) -- stmt-used
│      │     └────4,032 B (00.00%) -- schema-used
│      ├─────205,680 B (00.03%) -- formhistory.sqlite
│      │     ├──198,608 B (00.03%) -- cache-used
│      │     ├────4,424 B (00.00%) -- stmt-used
│      │     └────2,648 B (00.00%) -- schema-used
│      ├─────181,304 B (00.03%) -- cookies.sqlite
│      │     ├──165,584 B (00.03%) -- cache-used
│      │     ├───12,752 B (00.00%) -- stmt-used
│      │     └────2,968 B (00.00%) -- schema-used
│      ├─────109,152 B (00.02%) -- downloads.sqlite
│      │     ├───99,552 B (00.02%) -- cache-used
│      │     ├────6,768 B (00.00%) -- stmt-used
│      │     └────2,832 B (00.00%) -- schema-used
│      ├─────108,400 B (00.02%) -- permissions.sqlite
│      │     ├───99,560 B (00.02%) -- cache-used
│      │     ├────6,776 B (00.00%) -- stmt-used
│      │     └────2,064 B (00.00%) -- schema-used
│      └─────107,232 B (00.02%) -- search.sqlite
│            ├───99,544 B (00.02%) -- cache-used
│            ├────5,672 B (00.00%) -- stmt-used
│            └────2,016 B (00.00%) -- schema-used
├───39,131,050 B (06.24%) -- layout
│   ├──38,369,722 B (06.12%) -- arenas
│   └─────761,328 B (00.12%) -- styledata
├────1,174,840 B (00.19%) -- xpti-working-set
├──────645,105 B (00.10%) -- images
│      ├──610,708 B (00.10%) -- chrome
│      │  ├──610,708 B (00.10%) -- used
│      │  │  ├──610,708 B (00.10%) -- 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
│      └───34,397 B (00.01%) -- content
│          ├──34,397 B (00.01%) -- used
│          │  ├──18,536 B (00.00%) -- uncompressed-heap
│          │  ├──15,861 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
├───────59,904 B (00.01%) -- cycle-collector
└──────────945 B (00.00%) -- network-memory-cache

Other Measurements
      651,740 B -- gfx-surface-image
  434,548,528 B -- heap-allocated
  264,674,208 B -- heap-unallocated
  434,555,568 B -- heap-zone0-committed
  689,786,880 B -- heap-zone0-used
              2 -- js-compartments-system
              3 -- js-compartments-user
  176,160,768 B -- js-gc-heap
   11,117,672 B -- js-gc-heap-arena-unused
            0 B -- js-gc-heap-chunk-clean-unused
   43,065,856 B -- js-gc-heap-chunk-dirty-unused
         30.75% -- js-gc-heap-unused-fraction
         39,730 -- page-faults-hard
     21,891,110 -- page-faults-soft
  618,369,024 B -- resident
4,434,821,120 B -- vsize


Here's how:

1. Create a new profile and start Firefox in it.
2. Open two new tabs (http://tbpl.mozilla.org/ and http://tbpl.mozilla.org/?tree=Mozilla-Inbound), and pin them both.
3. Open about:home and leave the app tabs in the background.
4. Wait!
Assignee: ehsan → nobody
Whiteboard: [MemShrink] → [MemShrink:P2]
Closing the app tabs causes the memory to be reclaimed.  I'll try keeping these open in Chrome and see what happens too.
I reproduced the exact same thing in Chrome.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → INVALID
Can you reproduce this with http://tbpl.allizom.org/?usebuildbot=1 too?
(In reply to Markus Stange from comment #8)
> Can you reproduce this with http://tbpl.allizom.org/?usebuildbot=1 too?

Yes.

I did some more experiments.  If I reload all of my open TBPL pages, and press the CC/GC/Minimize button at the end of about:memory page several times, the memory usage drops back down.

If the TBPL page is left open for a few days, it makes the browser completely unusable.  I think the js heap for the compartment just gets too big, and the page starts to show the slow script dialog every few minutes.  (I just saw a 650MB compartment for TBPL)
(In reply to Ehsan Akhgari [:ehsan] from comment #9)
> If the TBPL page is left open for a few days, it makes the browser
> completely unusable.  I think the js heap for the compartment just gets too
> big, and the page starts to show the slow script dialog every few minutes. 
> (I just saw a 650MB compartment for TBPL)

I do not see this in my FF6 release dogfooding. Hmm.

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