Closed
Bug 30828
Opened 25 years ago
Closed 16 years ago
widget leakage in mailreader and new message
Categories
(MailNews Core :: Backend, defect, P3)
Tracking
(Not tracked)
RESOLVED
INVALID
Future
People
(Reporter: con.hennessy, Unassigned)
References
Details
(Keywords: memory-leak)
From todays CVS:
When you start to edit mail and then close the window ( I did not send
mail ), you can see that the number of widgets which still exists seems
to be 2 more than the previous time. i.e. if you continuously open a
new mail message and close the window the count for "widgets exist"
increments by 2.
Something similiar can be seen when opening and closing the mailreader.
(Possibly this is affected by the fact that the IMAP login window
comes up twice - I cancelled both ? )
Comment 1•25 years ago
|
||
-> MailNews team
Assignee: cbegle → phil
Component: Browser-General → Back End
Product: Browser → MailNews
QA Contact: asadotzler → lchiang
Comment 2•25 years ago
|
||
alecf tells me this is an issue with the underlying widget library, not under
mail/news control. Reassigning to pavlov, cc blizzard.
Assignee: phil → pavlov
Comment 3•25 years ago
|
||
Does alecf have sekret knowledge about how this leak is happening? Are we
leaking webshells here? that would cause a leak of widgets.
Comment 4•25 years ago
|
||
we might leak webshells, but mail really doesn't play with them THAT much.. and
we certainly don't go down to the widget level.
con.hennessy, are you talking about the mail compose window or the mail reader?
(so I know who else to add to the CC)
Reporter | ||
Comment 5•25 years ago
|
||
I was talking about BOTH the mail reader and the mail compose window.
I saw a message something similar to:
widget::~widget () : X widgets not destroyed
where X was more usually 1 or 2 more every time I closed the appropriate
window than the time before.
Sorry I cannot give you the exact message but having updated from the
CVS repository yesterday I do not see the messages about the number of
widgets anymore :-(
Reporter | ||
Comment 6•25 years ago
|
||
From todays CVS update I still see the same problem, so here is the exact
trace I see when I start the compone window ( sorry it's a bit long but
look at the end for more comments ):
ComposeMessage from XUL: [nsIMsgIdentity: id2]
WEBSHELL+ = 8
WEBSHELL+ = 9
ComposeLoad from XUL
Compose: ComposeStartup
[preselectid=id2]
[format=0]
[type=0]
[nsIMsgIdentity: id2]
Created nsEditorShell
Created editorShell
frame: Text(-1) (0x8d1a5bc) style: 0x8d1b6a8 :-moz-text {}
Wrong parent style context: style: 0x8d19f60 {
http://www.w3.org/TR/REC-html40|input weight: 1 { font-family: "-moz-fixed"
color: "black" background-color: "white" vertical-align: 17[0x11]enum
text-align: 1[0x1]enum border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0xcc 0xcc 0xcc
0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc
0xff)rbga border-style: 8[0x8]enum 8[0x8]enum 8[0x8]enum 8[0x8]enum box-sizing:
2[0x2]enum behavior:
url("resource:/chrome/platformHTMLBindings.xml#inputFields") }
http://www.w3.org/TR/REC-html40|input[|type=button] weight: 257 { font-family:
"sans-serif" font-size: 2[0x2]enum color: "black" background-color: (0xce 0xcf
0xce 0xff)rbga padding-top: 1px padding-right: 1px padding-bottom: 1px
padding-left: 1px border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0x9c 0x9a 0x9c
0xff)rbga (0x9c 0x9a 0x9c 0xff)rbga (0x9c 0x9a 0x9c 0xff)rbga (0x9c 0x9a 0x9c
0xff)rbga border-style: 9[0x9]enum 9[0x9]enum 9[0x9]enum 9[0x9]enum box-sizing:
2[0x2]enum behavior: none }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-image:
url("resource:///res/arrow.gif") background-repeat: 0[0x0]enum
background-x-position: 50[0x32]enum background-y-position: 50[0x32]enum
white-space: 2[0x2]enum border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0xcc 0xcc 0xcc
0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc
0xff)rbga border-style: 9[0x9]enum 9[0x9]enum 9[0x9]enum 9[0x9]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 0px
-moz-border-radius-bottomRight: 0px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
type = 5[0x5]enum
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc
0xff)rbga background-repeat: 0[0x0]enum background-x-position: 50[0x32]enum
background-y-position: 50[0x32]enum border-top-width: 1px border-right-width:
1px border-bottom-width: 1px border-left-width: 1px border-color: "white" (0x66
0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga "white" border-style: 5[0x5]enum
5[0x5]enum 5[0x5]enum 5[0x5]enum -moz-border-radius-topLeft: 0px
-moz-border-radius-topRight: 3px -moz-border-radius-bottomRight: 3px
-moz-border-radius-bottomLeft: 0px width: 12px height: 12px }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc 0xff)rbga background-repeat: 0[0x0]enum background-x-position:
50[0x32]enum background-y-position: 50[0x32]enum border-top-width: 1px
border-right-width: 1px border-bottom-width: 1px border-left-width: 1px
border-color: "white" (0x66 0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga
"white" border-style: 5[0x5]enum 5[0x5]enum 5[0x5]enum 5[0x5]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 3px
-moz-border-radius-bottomRight: 3px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc 0xff)rbga background-repeat: 0[0x0]enum background-x-position:
50[0x32]enum background-y-position: 50[0x32]enum border-top-width: 1px
border-right-width: 1px border-bottom-width: 1px border-left-width: 1px
border-color: "white" (0x66 0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga
"white" border-style: 5[0x5]enum 5[0x5]enum 5[0x5]enum 5[0x5]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 3px
-moz-border-radius-bottomRight: 3px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
}
should be using: style: 0x8d1b1b0 :button-content {
*|:button-content weight: 0 { text-align: 3[0x3]enum display: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
}
frame: Text(-1) (0x8d1ab7c) style: 0x8d1b6a8 :-moz-text {}
Wrong parent style context: style: 0x8d19f60 {
http://www.w3.org/TR/REC-html40|input weight: 1 { font-family: "-moz-fixed"
color: "black" background-color: "white" vertical-align: 17[0x11]enum
text-align: 1[0x1]enum border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0xcc 0xcc 0xcc
0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc
0xff)rbga border-style: 8[0x8]enum 8[0x8]enum 8[0x8]enum 8[0x8]enum box-sizing:
2[0x2]enum behavior:
url("resource:/chrome/platformHTMLBindings.xml#inputFields") }
http://www.w3.org/TR/REC-html40|input[|type=button] weight: 257 { font-family:
"sans-serif" font-size: 2[0x2]enum color: "black" background-color: (0xce 0xcf
0xce 0xff)rbga padding-top: 1px padding-right: 1px padding-bottom: 1px
padding-left: 1px border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0x9c 0x9a 0x9c
0xff)rbga (0x9c 0x9a 0x9c 0xff)rbga (0x9c 0x9a 0x9c 0xff)rbga (0x9c 0x9a 0x9c
0xff)rbga border-style: 9[0x9]enum 9[0x9]enum 9[0x9]enum 9[0x9]enum box-sizing:
2[0x2]enum behavior: none }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-image:
url("resource:///res/arrow.gif") background-repeat: 0[0x0]enum
background-x-position: 50[0x32]enum background-y-position: 50[0x32]enum
white-space: 2[0x2]enum border-top-width: 2px border-right-width: 2px
border-bottom-width: 2px border-left-width: 2px border-color: (0xcc 0xcc 0xcc
0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc 0xff)rbga (0xcc 0xcc 0xcc
0xff)rbga border-style: 9[0x9]enum 9[0x9]enum 9[0x9]enum 9[0x9]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 0px
-moz-border-radius-bottomRight: 0px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
type = 5[0x5]enum
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input weight: 1 { color: "black"
background-color: "white" text-align: 1[0x1]enum user-focus: normal }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc 0xff)rbga background-repeat: 0[0x0]enum background-x-position:
50[0x32]enum background-y-position: 50[0x32]enum border-top-width: 1px
border-right-width: 1px border-bottom-width: 1px border-left-width: 1px
border-color: "white" (0x66 0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga
"white" border-style: 5[0x5]enum 5[0x5]enum 5[0x5]enum 5[0x5]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 3px
-moz-border-radius-bottomRight: 3px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc 0xff)rbga background-repeat: 0[0x0]enum background-x-position:
50[0x32]enum background-y-position: 50[0x32]enum border-top-width: 1px
border-right-width: 1px border-bottom-width: 1px border-left-width: 1px
border-color: "white" (0x66 0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga
"white" border-style: 5[0x5]enum 5[0x5]enum 5[0x5]enum 5[0x5]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 3px
-moz-border-radius-bottomRight: 3px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
http://www.w3.org/TR/REC-html40|input[|type=button] >
http://www.w3.org/TR/REC-html40|select weight: 258 { background-color: (0xcc
0xcc 0xcc 0xff)rbga background-repeat: 0[0x0]enum background-x-position:
50[0x32]enum background-y-position: 50[0x32]enum border-top-width: 1px
border-right-width: 1px border-bottom-width: 1px border-left-width: 1px
border-color: "white" (0x66 0x66 0x66 0xff)rbga (0x66 0x66 0x66 0xff)rbga
"white" border-style: 5[0x5]enum 5[0x5]enum 5[0x5]enum 5[0x5]enum
-moz-border-radius-topLeft: 0px -moz-border-radius-topRight: 3px
-moz-border-radius-bottomRight: 3px -moz-border-radius-bottomLeft: 0px width:
12px height: 12px }
}
should be using: style: 0x8d1b1b0 :button-content {
*|:button-content weight: 0 { text-align: 3[0x3]enum display: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
*|:button-content > http://www.w3.org/TR/REC-html40|input >
http://www.w3.org/TR/REC-html40|select weight: 2 { text-align: 1[0x1]enum }
}
nsWidget::~nsWidget() of toplevel: 58 widgets still exist.
nsWidget::~nsWidget() of toplevel: 53 widgets still exist.
editor initialized in PLAIN TEXT mode
Attaching to WebShellWindow[_blank]
###!!! ASSERTION: bad args: '(inChild && outParent && outOffset)', file
nsMsgCompose.cpp, line 208
###!!! Break: at file nsMsgCompose.cpp, line 208
set focus on the recipient
WEBSHELL+ = 10
ComposeUnload from XUL
nsWidget::~nsWidget() of toplevel: 57 widgets still exist.
nsWidget::~nsWidget() of toplevel: 52 widgets still exist.
nsWidget::~nsWidget() of toplevel: 47 widgets still exist.
WEBSHELL- = 9
WEBSHELL- = 8
WEBSHELL- = 7
nsWidget::~nsWidget() of toplevel: 38 widgets still exist.
Now if I run it again I get what looks like the same output as above
except with the last lines:
nsWidget::~nsWidget() of toplevel: 46 widgets still exist.
WEBSHELL- = 8
WEBSHELL- = 7
nsWidget::~nsWidget() of toplevel: 41 widgets still exist.
and running again I get :
nsWidget::~nsWidget() of toplevel: 58 widgets still exist.
nsWidget::~nsWidget() of toplevel: 53 widgets still exist.
nsWidget::~nsWidget() of toplevel: 48 widgets still exist.
WEBSHELL- = 8
WEBSHELL- = 7
Comment 7•25 years ago
|
||
I'm guessing this is a leak somewhere in the mail/news code. I doubt it's in
the end widget code since those are the victims of the leak - not the leak
itself. :)
Comment 8•25 years ago
|
||
ok, mscott is all over webshell leaks in the mail reader.
Comment 9•25 years ago
|
||
I'm not seeing any webshell leaks bringing up and closing the compose window.
This webshell leak was fixed last week by waterson. If I startup, bring up a
compose window and then close the compose window. my webshell count is the same
as it was before I brought up the compose window. I didn't read all the comments
in this bug as they were quite long...is this not what you are seeing?
Reporter | ||
Comment 10•25 years ago
|
||
Sorry but I was not talking about the WEBSHELL line I was talking about
the line which looks like :
nsWidget::~nsWidget() of toplevel: 48 widgets still exist.
If you look at my previous message you will see that this number seems
to grow as I open and close a mail-reader or mail-compose window.
i.e. you can see that after I first close the window we see that
nsWidget::~nsWidget() of toplevel: 38 widgets still exist.
after the second run we see:
nsWidget::~nsWidget() of toplevel: 41 widgets still exist.
and after the third we see :
nsWidget::~nsWidget() of toplevel: 48 widgets still exist.
I hope that this is clearer.
Comment 11•25 years ago
|
||
That's fine. But something is leaking those widgets and it's probably not the
widget code itself.
Comment 12•25 years ago
|
||
I found a dom node like in the compose backend tonight that I just checked in a
fix for. This *could* account for the leak reported in this bug report. But I
didn't verify that. I will try to investigate more into this.
I suspect this bug better belongs to me instead of pav.....
Assignee: pavlov → mscott
Target Milestone: M15
Comment 13•25 years ago
|
||
as do i... :-)
Updated•25 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 14•25 years ago
|
||
My dom node leak fix definetly made things *MUCH* better. But there is still a
single widget leak every time you bring up a compose window.
I now see numbers like the following:
First time I bring up and exit compose window:
nsWidget::~nsWidget() of toplevel: 10 widgets still exist.
Second time:
nsWidget::~nsWidget() of toplevel: 11 widgets still exist.
Third Time:
nsWidget::~nsWidget() of toplevel: 12 widgets still exist.
Comment 15•25 years ago
|
||
triaging since M15 is tonight. Not an M15 stoppper.
Target Milestone: M15 → M17
Keywords: mlk
Comment 17•24 years ago
|
||
Is this leak still occuring?
QA Contact: lchiang → stephend
Updated•23 years ago
|
Updated•20 years ago
|
Product: MailNews → Core
Updated•16 years ago
|
Assignee: mscott → nobody
QA Contact: stephend → backend
Assignee | ||
Updated•16 years ago
|
Product: Core → MailNews Core
Comment 19•16 years ago
|
||
nsWidget::~nsWidget() is now gone. I don't see any way we can reproduce this actual bug and results easily. I'm therefore going to close this bug, as I'm sure we'll pick it up in leak/bloat as we develop more tests and investigate what our leaks are.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → INVALID
You need to log in
before you can comment on or make changes to this bug.
Description
•