Closed
Bug 113359
Opened 23 years ago
Closed 23 years ago
MLK: Memory leak of 421 bytes from 9 blocks allocated in nsMsgDatabase::RowCellColumnToAddressCollationKey
Categories
(MailNews Core :: Database, defect)
Tracking
(Not tracked)
VERIFIED
FIXED
People
(Reporter: stephend, Assigned: naving)
Details
(Keywords: memory-leak)
Attachments
(4 files)
Build ID: Latest trunk, Windows 2000 using Purify.
While verifying bug 112783, I came across this:
Steps to Reproduce:
Sorry, this is all the information I have so far...
1. My Inbox was sorted by Sender, Ascending.
2. Had 3 visible new messages (1 near the top of the 3 pane, the other 2 near
the bottom of the visible area).
3. I had to find a particular message (for bug 112783) and so scrolled down to
about the middle of my Inbox.
4. Clicked on the message (I _bet_ this step isn't important, but you never
know).
I'll attach screenshots of where the message in step #4 is in relation to the
new/unread messages.
[W] MLK: Memory leak of 421 bytes from 9 blocks allocated in PR_Malloc
Distribution of leaked blocks
Allocation location
malloc [msvcrt.DLL]
PR_Malloc [prmem.c:50]
nsMsgDatabase::RowCellColumnToAddressCollationKey(nsIMdbRow *,UINT,BYTE
* *,UINT *) [nsMsgDatabase.cpp:2813]
}
if (NS_SUCCEEDED(ret))
{
=> ret = CreateCollationKey(NS_ConvertUTF8toUCS2(name).get(),
result, len);
}
return ret;
nsMsgHdr::GetAuthorCollationKey(BYTE * *,UINT *) [nsMsgHdr.cpp:642]
NS_IMETHODIMP nsMsgHdr::GetAuthorCollationKey(PRUint8 **resultAuthor,
PRUint32 *len)
=> {
return m_mdb->RowCellColumnToAddressCollationKey(GetMDBRow(), m_mdb-
>m_senderColumnToken, resultAuthor, len);
}
nsMsgDBView::GetInsertIndex(nsIMsgDBHdr *) [nsMsgDBView.obj:3169]
nsMsgDBView::AddHdr(nsIMsgDBHdr *) [nsMsgDBView.obj:3255]
nsMsgThreadedDBView::OnNewHeader(UINT,UINT,int)
[nsMsgThreadedDBView.cpp:536]
// We used to check if this was the first header in the thread, but
that's
// a bit harder in the unreadOnly view. But we'll catch it below.
if (! (m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay))// ||
msgHdr->GetMessageKey() == m_messageDB->GetKeyOfFirstMsgInThread(msgHdr-
>GetMessageKey()))
=> rv = AddHdr(msgHdr);
else // need to find the thread we added this to so we can
change the hasnew flag
// added message to existing thread, but not to view
{ // Fix flags on thread header.
nsMsgDBView::OnKeyAdded(UINT,UINT,int,nsIDBChangeListener *)
[nsMsgDBView.obj:3568]
nsMsgDatabase::AddNewHdrToDB(nsIMsgDBHdr *,int) [nsMsgDatabase.cpp:2674]
nsMsgKey threadParent;
newHdr->GetThreadParent(&threadParent);
=> NotifyKeyAddedAll(key, threadParent, flags, NULL);
}
}
NS_ASSERTION(NS_SUCCEEDED(err), "error creating thread");
nsImapMailFolder::NormalEndHeaderParseStream(nsIImapProtocol *)
[nsImapMailFolder.cpp:2555]
}
// here we need to tweak flags from uid state..
if (mDatabase && (!m_msgMovedByFilter || ShowDeletedMessages()))
=> mDatabase->AddNewHdrToDB(newMsgHdr, PR_TRUE);
m_msgParser->Clear(); // clear out parser, because it holds onto a
msg hdr.
// I don't think we want to do this - it does bad things like set
the size incorrectly.
// m_msgParser->FinishHeader();
XPTC_InvokeByIndex [xptcinvoke.cpp:152]
mov eax,methodIndex
shl eax,2 // *= 4
add edx,eax
=> call [edx] // stdcall, i.e. callee cleans up
stack.
}
}
#pragma warning(default : 4035) // restore default
EventHandler [nsProxyEvent.cpp:514]
nsresult rv = XPTC_InvokeByIndex( proxyObject->GetRealObject(),
info->GetMethodIndex(),
info->GetParameterCount(),
=> info->GetParameterList());
info->SetResult(rv);
}
else
md_EventReceiverProc [plevent.c:1071]
{
PREventQueue *queue = (PREventQueue *)lParam;
queue->removeMsg = PR_FALSE;
=> PL_ProcessPendingEvents(queue);
queue->removeMsg = PR_TRUE;
#ifdef XP_OS2
return MRFROMLONG(TRUE);
ScrollDC [user32.dll]
ScrollDC [user32.dll]
DispatchMessageA [user32.dll]
DispatchMessageA [USER32.DLL]
nsAppShell::Run(void) [nsAppShell.cpp:121]
// if (!nsToolkit::gAIMMMsgPumpOwner ||
(nsToolkit::gAIMMMsgPumpOwner->OnTranslateMessage(&msg) != S_OK))
//#endif
TranslateMessage(&msg);
=> ::DispatchMessage(&msg);
if (mDispatchListener)
mDispatchListener->AfterDispatch();
}
nsAppShellService::Run(void) [nsAppShellService.cpp:301]
NS_IMETHODIMP
nsAppShellService::Run(void)
=> {
return mAppShell->Run();
}
main1 [nsAppRunner.cpp:1269]
// Start main event loop
NS_TIMELINE_ENTER("appShell->Run");
=> rv = appShell->Run();
NS_TIMELINE_LEAVE("appShell->Run");
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to run appshell");
| Reporter | ||
Updated•23 years ago
|
| Reporter | ||
Comment 1•23 years ago
|
||
| Reporter | ||
Comment 2•23 years ago
|
||
| Reporter | ||
Comment 3•23 years ago
|
||
| Assignee | ||
Comment 4•23 years ago
|
||
free the collation keys after use.
Comment 6•23 years ago
|
||
Comment on attachment 60275 [details] [diff] [review]
proposed fix
r=bienvenu.
Attachment #60275 -
Flags: review+
Comment 7•23 years ago
|
||
Stephen, the way to reproduce this leak (and for Navin to test his fix), is to
sort the folder by sender, then get new mail in the folder. The leak was when we
were doing an insertion sort by sender on new mail inserted into a folder.
| Reporter | ||
Comment 8•23 years ago
|
||
David, thanks.
Comment on attachment 60275 [details] [diff] [review]
proposed fix
r=suresh
| Assignee | ||
Comment 10•23 years ago
|
||
fixed
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
| Reporter | ||
Comment 11•23 years ago
|
||
Verified FIXED with the current trunk build running under Purify / Windows 2000.
Status: RESOLVED → VERIFIED
Updated•20 years ago
|
Product: MailNews → Core
Updated•17 years ago
|
Product: Core → MailNews Core
You need to log in
before you can comment on or make changes to this bug.
Description
•