Closed Bug 42943 Opened 25 years ago Closed 25 years ago

Mozilla M16 is leaking shm segments in the X server

Categories

(SeaMonkey :: General, defect, P3)

x86
Linux

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: elladan, Assigned: pavlov)

Details

(Keywords: helpwanted, memory-leak, Whiteboard: [nsbeta3+])

When Mozilla starts up, it leeches a whole bunch of SHM segments. Every time you visit a page, it leeches some more. I noticed this because other apps are unable to do MIT-XSHM connections while Mozilla is running, presumably because it leeches so many SHM segments that it runs into OS or X server limits. Normal memory leaks are "ok". Do NOT leak shared resources! Just a random guess, perhaps you're not releasing some X pixmaps etc? Pasted below are diffs from ibcs -m: Changes from "initial state" to "mozilla running" state: [elladan@tandu elladan]$ diff /tmp/asdf.1 /tmp/asdf.2 12,13c12,13 < 0x00000000 154633 root 644 4096 14 dest < 0x00000000 154634 root 644 4096 10 dest --- > 0x00000000 154633 root 644 4096 15 dest > 0x00000000 154634 root 644 4096 11 dest 51c51 < 0x00000000 205360 root 644 4096 2 dest --- > 0x00000000 205360 root 644 4096 3 dest 52a53 > 0x00000000 534066 elladan 777 32768 2 dest 72a74,80 > 0x00000000 534087 elladan 777 32768 2 dest > 0x00000000 534088 elladan 777 32768 2 dest > 0x00000000 534089 elladan 777 32768 2 dest > 0x00000000 534090 elladan 777 32768 2 dest > 0x00000000 534091 elladan 777 32768 2 dest > 0x00000000 534348 root 644 4096 2 dest > 0x00000000 534349 root 644 4096 2 dest 75a84,88 > 0x00000000 534353 root 644 4096 2 dest > 0x00000000 534354 root 644 4096 5 dest > 0x00000000 535379 root 644 4096 2 dest > 0x00000000 535380 root 644 4096 2 dest > 0x00000000 535381 root 644 4096 2 dest A page is loaded in mozilla: [elladan@tandu elladan]$ diff /tmp/asdf.2 /tmp/asdf.3 88a89,97 > 0x00000000 535382 root 644 4096 2 dest > 0x00000000 535383 root 644 4096 2 dest > 0x00000000 535384 root 644 4096 2 dest > 0x00000000 535385 root 644 4096 2 dest > 0x00000000 535386 root 644 4096 2 dest > 0x00000000 535387 root 644 4096 2 dest > 0x00000000 535388 root 644 4096 2 dest > 0x00000000 535389 root 644 4096 2 dest > 0x00000000 535390 root 644 4096 2 dest Another page is loaded: [elladan@tandu elladan]$ diff /tmp/asdf.3 /tmp/asdf.4 97a98,111 > 0x00000000 535391 root 644 4096 2 dest > 0x00000000 535392 root 644 4096 2 dest > 0x00000000 535393 root 644 4096 2 dest > 0x00000000 535394 root 644 4096 2 dest > 0x00000000 535395 root 644 4096 2 dest > 0x00000000 535396 root 644 4096 2 dest > 0x00000000 535397 root 644 4096 2 dest > 0x00000000 535398 root 644 4096 2 dest > 0x00000000 535399 root 644 4096 2 dest > 0x00000000 535400 root 644 4096 2 dest > 0x00000000 535401 root 644 4096 2 dest > 0x00000000 535402 root 644 4096 2 dest > 0x00000000 535403 root 644 4096 2 dest > 0x00000000 535404 root 644 4096 2 dest Yet another page is loaded: [elladan@tandu elladan]$ diff /tmp/asdf.4 /tmp/asdf.5 111a112,125 > 0x00000000 535405 root 644 4096 2 dest > 0x00000000 535406 root 644 4096 2 dest > 0x00000000 535407 root 644 4096 2 dest > 0x00000000 535408 root 644 4096 2 dest > 0x00000000 535409 root 644 4096 2 dest > 0x00000000 535410 root 644 4096 2 dest > 0x00000000 535411 root 644 4096 2 dest > 0x00000000 535412 root 644 4096 2 dest > 0x00000000 535413 root 644 4096 2 dest > 0x00000000 535414 root 644 4096 2 dest > 0x00000000 535415 root 644 4096 2 dest > 0x00000000 535416 root 644 4096 2 dest > 0x00000000 535417 root 644 765952 2 dest > 0x00000000 535418 root 644 126976 2 dest Mozilla is exited (shm segments release): [elladan@tandu elladan]$ diff /tmp/asdf.5 /tmp/asdf.6 12,13c12,13 < 0x00000000 154633 root 644 4096 15 dest < 0x00000000 154634 root 644 4096 11 dest --- > 0x00000000 154633 root 644 4096 14 dest > 0x00000000 154634 root 644 4096 10 dest 51c51 < 0x00000000 205360 root 644 4096 3 dest --- > 0x00000000 205360 root 644 4096 2 dest 53d52 < 0x00000000 534066 elladan 777 32768 2 dest 74,80d72 < 0x00000000 534087 elladan 777 32768 2 dest < 0x00000000 534088 elladan 777 32768 2 dest < 0x00000000 534089 elladan 777 32768 2 dest < 0x00000000 534090 elladan 777 32768 2 dest < 0x00000000 534091 elladan 777 32768 2 dest < 0x00000000 534348 root 644 4096 2 dest < 0x00000000 534349 root 644 4096 2 dest 84,125d75 < 0x00000000 534353 root 644 4096 2 dest < 0x00000000 534354 root 644 4096 5 dest < 0x00000000 535379 root 644 4096 2 dest < 0x00000000 535380 root 644 4096 2 dest < 0x00000000 535381 root 644 4096 2 dest < 0x00000000 535382 root 644 4096 2 dest < 0x00000000 535383 root 644 4096 2 dest < 0x00000000 535384 root 644 4096 2 dest < 0x00000000 535385 root 644 4096 2 dest < 0x00000000 535386 root 644 4096 2 dest < 0x00000000 535387 root 644 4096 2 dest < 0x00000000 535388 root 644 4096 2 dest < 0x00000000 535389 root 644 4096 2 dest < 0x00000000 535390 root 644 4096 2 dest < 0x00000000 535391 root 644 4096 2 dest < 0x00000000 535392 root 644 4096 2 dest < 0x00000000 535393 root 644 4096 2 dest < 0x00000000 535394 root 644 4096 2 dest < 0x00000000 535395 root 644 4096 2 dest < 0x00000000 535396 root 644 4096 2 dest < 0x00000000 535397 root 644 4096 2 dest < 0x00000000 535398 root 644 4096 2 dest < 0x00000000 535399 root 644 4096 2 dest < 0x00000000 535400 root 644 4096 2 dest < 0x00000000 535401 root 644 4096 2 dest < 0x00000000 535402 root 644 4096 2 dest < 0x00000000 535403 root 644 4096 2 dest < 0x00000000 535404 root 644 4096 2 dest < 0x00000000 535405 root 644 4096 2 dest < 0x00000000 535406 root 644 4096 2 dest < 0x00000000 535407 root 644 4096 2 dest < 0x00000000 535408 root 644 4096 2 dest < 0x00000000 535409 root 644 4096 2 dest < 0x00000000 535410 root 644 4096 2 dest < 0x00000000 535411 root 644 4096 2 dest < 0x00000000 535412 root 644 4096 2 dest < 0x00000000 535413 root 644 4096 2 dest < 0x00000000 535414 root 644 4096 2 dest < 0x00000000 535415 root 644 4096 2 dest < 0x00000000 535416 root 644 4096 2 dest < 0x00000000 535417 root 644 765952 2 dest < 0x00000000 535418 root 644 126976 2 dest
reporter - what linux version do you have? Asa, should we throw this to Build Config?
Linux version: Redhat 6.2 w/XFree 4.0
Oh, and the command was "ipcs" not "ibcs"
asa - any ideas where this should go?
Assignee: asa → pavlov
sending to pavlov for a look. possibly related to bug 36406 ??
so this problem worries me... when GdkImage creates a shared image, it adds it to a list. then when they are destroyed, it removes them from the list. gdk adds an atexit handler (which I have verified to be getting fired) which goes through this list and destroys all the images in the list. So I don't think any shared image should be leaking. All of the shm specific code in our image code is turned off currently. It is possible that we are leaking pixmaps, but they wouldn't be shared pixmaps, so this wouldn't explain the problem you are seeing... I will continue to think about this.
Status: NEW → ASSIGNED
Keywords: mlk, nsbeta3
nsbeta3+, HELP WANTED, cc blizzard.
Keywords: helpwanted
Whiteboard: [nsbeta3+]
Target Milestone: --- → M18
I am unable to reproduce this bug. I am running XFree86 4.0.1a. Mozilla tries to grab 6 shared memory segments on startup, but it doesn't grab anymore (that it holds on to) from page to page. I suspect that your X server is leaking things, and that mozilla is, in fact, not leaking them.
Confirmed, I can no longer reproduce this bug on Redhat 6.2 and XFree86 4.0.1. Previous XFree86 was 4.0.0 from a rawhide rpm set, with NV drivers. Current XFree86 is a proper rebuild of 4.0.1 running MGA drivers (with a full OS reinstall, too). I suspect it was either an XFree4.0 general bug, or possibly a bug in the NVidia display driver. Bug does not reproduce on my system with M15, M16, or a recent nightly.
ok. i'm gonna mark this invalid then. Please do let me know if you ever see us leaking these, since that would be real bad(tm). thanks
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → INVALID
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.