Closed Bug 13983 Opened 25 years ago Closed 25 years ago

assertion opening folder cache.

Categories

(MailNews Core :: Database, defect, P3)

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: law, Assigned: Bienvenu)

References

Details

Whenever I try to open a new mail message, I get a crash (assertion failure)
deep in the guts of some database initialization code.

Steps to reproduce:

1. Erase c:\winnt\mozregistry.dat
2. rm -r \mozilla\dist\Users50
3. apprunner -installer
4. Select a profile and click Start.
5. After browser window opens, chose File->New->Mail Message.

At this point I get a crash with this stack trace:

NTDLL! 77f76148()
nsDebug::Assertion(const char * 0x02108be8, const char * 0x02108b04, const char
* 0x02108adc, int 0x0000004a) line 181 + 13 bytes
mork_assertion_signal(const char * 0x02108be8) line 74 + 31 bytes
morkEnv::NewError(const char * 0x02bef240) line 365 + 19 bytes
morkFile::NewFileErrnoError(morkEnv * 0x02bef530) line 268
morkStdioFile::new_stdio_file_fault(morkEnv * 0x02bef530) line 664
morkStdioFile::OpenStdio(morkEnv * 0x02bef530, const char * 0x02bef410, const
char * 0x02108df8) line 735
morkStdioFile::morkStdioFile(morkEnv * 0x02bef530, const morkUsage & {...},
nsIMdbHeap * 0x02befa40, nsIMdbHeap * 0x02befa40, const char * 0x02bef410, const
char * 0x02108df8) line 689
morkStdioFile::OpenOldStdioFile(morkEnv * 0x02bef530, nsIMdbHeap * 0x02befa40,
const char * 0x02bef410, unsigned char 0x00) line 367 + 62 bytes
morkFile::OpenOldFile(morkEnv * 0x02bef530, nsIMdbHeap * 0x02befa40, const char
* 0x02bef410, unsigned char 0x00) line 174 + 21 bytes
orkinFactory::OpenOldFile(nsIMdbEnv * 0x02bef498, nsIMdbHeap * 0x02befa40, const
char * 0x02bef410, unsigned char 0x00, nsIMdbFile * * 0x0012e67c) line 308 + 21
bytes
nsMsgFolderCache::OpenMDB(const char * 0x02befa78, int 0x00000001) line 255 + 34
bytes
nsMsgFolderCache::Init(nsMsgFolderCache * const 0x02befc70, nsIFileSpec *
0x02bef820) line 360 + 23 bytes
nsMsgMailSession::GetFolderCache(nsMsgMailSession * const 0x028d7740,
nsIMsgFolderCache * * 0x0012e770) line 167
nsMsgDBFolder::ReadDBFolderInfo(int 0x00000000) line 191 + 36 bytes
nsImapMailFolder::UpdateSummaryTotals(nsImapMailFolder * const 0x02beeb8c, int
0x00000000) line 722
nsImapMailFolder::GetSubFolders(nsImapMailFolder * const 0x02beeb8c,
nsIEnumerator * * 0x0012e834) line 349
nsMsgFolderDataSource::createFolderChildNode(nsIMsgFolder * 0x02beeb8c,
nsIRDFNode * * 0x0012e914) line 1005 + 36 bytes
nsMsgFolderDataSource::createFolderNode(nsIMsgFolder * 0x02beeb8c,
nsIRDFResource * 0x01e4e2e0, nsIRDFNode * * 0x0012e914) line 794 + 16 bytes
nsMsgFolderDataSource::GetTarget(nsMsgFolderDataSource * const 0x02be0120,
nsIRDFResource * 0x02beeb80, nsIRDFResource * 0x01e4e2e0, int 0x00000001,
nsIRDFNode * * 0x0012e914) line 228 + 25 bytes
CompositeDataSourceImpl::GetTarget(CompositeDataSourceImpl * const 0x02be08f0,
nsIRDFResource * 0x02beeb80, nsIRDFResource * 0x01e4e2e0, int 0x00000001,
nsIRDFNode * * 0x0012e914) line 614 + 28 bytes
RDFGenericBuilderImpl::IsEmpty(nsIContent * 0x02bdfde0, nsIRDFResource *
0x02beeb80) line 2466 + 65 bytes
RDFGenericBuilderImpl::IsTemplateRuleMatch(nsIContent * 0x02bdee90,
nsIRDFResource * 0x01e4e2e0, nsIRDFResource * 0x02beeb80, nsIContent *
0x02bdfde0, int * 0x0012ebd4) line 1393 + 19 bytes
RDFGenericBuilderImpl::FindTemplate(nsIContent * 0x02bdee90, nsIRDFResource *
0x01e4e2e0, nsIRDFResource * 0x02beeb80, nsIContent * * 0x0012ec30) line 1489 +
33 bytes
RDFGenericBuilderImpl::CreateWidgetItem(nsIContent * 0x02bdee90, nsIRDFResource
* 0x01e4e2e0, nsIRDFResource * 0x02beeb80, int 0xffffffff, int 0x00000000) line
1896 + 44 bytes
RDFGenericBuilderImpl::CreateContainerContents(nsIContent * 0x02bdee90,
nsIRDFResource * 0x02bdafe0, int 0x00000000) line 2157 + 36 bytes
RDFGenericBuilderImpl::CreateContents(RDFGenericBuilderImpl * const 0x02be0d40,
nsIContent * 0x02bdee90) line 690 + 23 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x02a2dbe0, nsIContent * 0x02bdee90, int 0x00000000) line 748 +
39 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x02a28a70, nsIContent * 0x02bd97f0, int 0x00000000) line 717 +
42 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x02a28f40, nsIContent * 0x02bd85e0, int 0x00000000) line 717 +
42 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x02a0c090, nsIContent * 0x02b89de0, int 0x00000000) line 717 +
42 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x02a0c4e0, nsIContent * 0x02b89f90, int 0x00000000) line 717 +
42 bytes
RDFXULBuilderImpl::CreateChildrenFromGraph(nsINameSpace * 0x02b64fd0,
nsIRDFResource * 0x029c4de0, nsIContent * 0x02b631c0, int 0x00000000) line 717 +
42 bytes
RDFXULBuilderImpl::CreateRootContent(RDFXULBuilderImpl * const 0x02b63460,
nsIRDFResource * 0x029c4de0) line 548 + 35 bytes
XULDocumentImpl::EndLoad(XULDocumentImpl * const 0x02990160) line 2077 + 44
bytes
XULContentSinkImpl::DidBuildModel(XULContentSinkImpl * const 0x02992730, int
0x00000001) line 543
CWellFormedDTD::DidBuildModel(CWellFormedDTD * const 0x02994cf0, unsigned int
0x00000000, int 0x00000001, nsIParser * 0x02992250, nsIContentSink * 0x02992730)
line 287 + 20 bytes
nsParser::DidBuildModel(unsigned int 0x00000000) line 526 + 55 bytes
nsParser::ResumeParse(nsIDTD * 0x00000000, int 0x00000000) line 894
nsParser::EnableParser(int 0x00000001) line 620 + 15 bytes
XULContentSinkImpl::UpdateOverlayCounters(XULContentSinkImpl * const 0x02992730,
int 0xffffffff) line 1935 + 19 bytes
XULContentSinkImpl::CloseContainer(XULContentSinkImpl * const 0x02ac61e0, const
nsIParserNode & {...}) line 701
CWellFormedDTD::HandleEndToken(CToken * 0x018afee0) line 618 + 31 bytes
CWellFormedDTD::HandleToken(CWellFormedDTD * const 0x02ac2aa0, CToken *
0x018afee0, nsIParser * 0x02ac7da0) line 479 + 12 bytes
CWellFormedDTD::BuildModel(CWellFormedDTD * const 0x02ac2aa0, nsIParser *
0x02ac7da0, nsITokenizer * 0x02ac7900, nsITokenObserver * 0x00000000,
nsIContentSink * 0x02ac61e0) line 254 + 20 bytes
nsParser::BuildModel() line 942 + 34 bytes
nsParser::ResumeParse(nsIDTD * 0x00000000, int 0x00000000) line 887 + 11 bytes
nsParser::OnDataAvailable(nsParser * const 0x02ac7da4, nsIChannel * 0x02ac6af0,
nsISupports * 0x00000000, nsIInputStream * 0x02ac6608, unsigned int 0x00008000,
unsigned int 0x00004327) line 1288 + 19 bytes
nsDocumentBindInfo::OnDataAvailable(nsDocumentBindInfo * const 0x02ac51f0,
nsIChannel * 0x02ac6af0, nsISupports * 0x00000000, nsIInputStream * 0x02ac6608,
unsigned int 0x00008000, unsigned int 0x00004327) line 2000 + 32 bytes
nsChannelListener::OnDataAvailable(nsChannelListener * const 0x02ac6c60,
nsIChannel * 0x02ac6af0, nsISupports * 0x00000000, nsIInputStream * 0x02ac6608,
unsigned int 0x00008000, unsigned int 0x00004327) line 2273
nsFileChannel::OnDataAvailable(nsFileChannel * const 0x02ac6afc, nsIChannel *
0x02ac6af0, nsISupports * 0x00000000, nsIInputStream * 0x02ac6608, unsigned int
0x00008000, unsigned int 0x00004327) line 815
nsOnDataAvailableEvent::HandleEvent(nsOnDataAvailableEvent * const 0x02a52790)
line 345
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x02a52794) line 144 + 12 bytes
PL_HandleEvent(PLEvent * 0x02a52794) line 509 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00ab6410) line 470 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x003207e8, unsigned int 0x0000c0c0, unsigned int
0x00000000, long 0x00ab6410) line 938 + 9 bytes
USER32! 77e713ed()
00ab6410()
cc Seth Spitzer (sspitzer@netscape.com) in case this is a dup of installer
related bug for duplicate .newsrc lines that causes the same Mork file to be
opened more than once (so the second fails since files get opened with exclusive
write access, and therefore Mork cannot help but fail to do so).
Assignee: davidmc → mscott
Summary: Crash trying to compose new mail msg → assertion in imap.
bill, this is not a crash, it's an assertion.

were you able to continue on after the assertion?

changing summary to "assertion".  still a valid bug.

also, I don't think the compose window had anything to do with the assertion.

looking at the stack, it looks like the imap assertion stack.

re-assign to mscott.

one dollar says its a duplicate.
Status: NEW → ASSIGNED
The problem is that we are trying to open a mail summary file on a folder that
has never been opened before.

Bill try this for now:
1) Bring up messenger instead of trying to send a message from the browser.
2) open up your inbox (assuming it isn't more than 1k msgs or so otherwise
you'll have to wait a while for us to build mail summary files (a one time
cost)).

3) Now try clicking new message.

Do you still assert in mork?

I think the problem is that by going to new message from the browser before
ever running messenger, we're getting into a case where we haven't opened
folders before. and mork is asserting because we don't have a summary file for
the folder yet.

although I'm curious as to why opening message compose would make us look at
mail folders. Maybe Alec knows...I'm investigating.
Oh interesting....when we first create a mail session, we create a folder cache
even if we may not use it later...(as is the case when you bring up message
compose directly from the browser)
adding david because he did the folder cache stuff.

This would probably get fixed if I actually got off my butt and made the account
manager a service.
No, it's not trying to open a mail database, but rather, the one and only folder
cache. Usually when this fails, it's because there's no user profile directory.
Yes, they were assertions.  I tried skipping over them yesterday but either it
failed eventually, or I got bored.

I tried again today, skipped past three assertions, and things sort of worked.
I saw the assertions when starting Messenger, BTW (not going straight to
new-mail msg).  Oh, and I didn't have an inbox, which didn't seem to be a
problem when sending a new message at this point.

I successfully sent my message to Bob, so do what you wish with this bug report.
Thanks.
Bill, I think I know what went wrong here....

(1) You ran apprunner -installer
(2) I'm guessing you already had a 5.0 profile set up. The installer doesn't do
anything if you already have a 5.0 profile. So basically, your mail prefs from
4.5 never got migrated at all!
(3) You then launched mail and asserted trying to open a non-existent folder
cache because nothing got initialized.

To test this theory, can you try:
1) delete your mozregistry.dat (this makes us forget that you have any profiles
already in 5.0)
2) Now run apprunner -installer. Select a 4.5 profile to migrate and run.

Do you still see the assert?

David B. Can we create a folder summary file from scratch if there isn't one
already instead of falling into mork and asserting because it doesn't exist?
in addition to removing the moz registry, if you plan to migrate twice, move the
old profile directory Users50/law, for example, to the side.

you don't want to stop on top of it.

there's a bug out on this, and the solution will be to pick a unique name so you
can't stomp, even if you try.
Assignee: mscott → bienvenu
Status: ASSIGNED → NEW
Status: NEW → ASSIGNED
Target Milestone: M12
Again, this isn't a folder summary file - it's the folder cache! And yes, we can
create one if it doesn't exist. We used to, but I think maybe it got broken when
MDB changed the way files got opened. I'll see if I can trick Mork.
Summary: assertion in imap. → assertion opening folder cache.
changing summary - this has nothing to do with imap.
Blocks: 11091
QA Contact: lchiang → huang
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Target Milestone: M12 → M11
fixed in nsMsgFolderCache.cpp
*** Bug 12017 has been marked as a duplicate of this bug. ***
Status: RESOLVED → VERIFIED
OS: Windows NT → All
Hardware: PC → All
Passed by retest on the 10-08-12-M11 commercial build on
all the Win98, WinNT, Mac & Linux platforms:

No crash anymore when open the compose window from File-> New Message.
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.