Closed Bug 34443 Opened 25 years ago Closed 25 years ago

asserts launching addressbook from tasks menu

Categories

(SeaMonkey :: MailNews: Address Book & Contacts, defect, P2)

x86
All
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: prass, Assigned: chuang)

Details

Attachments

(1 file)

Steps to Reproduce: 1. Launch seamonkey 2. Choose tasks->Addressbook Expected result: AB launches Actual result: crash Build:20000404 Platform: linux
Alos noted that can accesss adressbook in other places like IM window with ab card icon without any problem.
Priority: P3 → P2
Probably related to bug 34438.
Severity: normal → critical
Keywords: crash
Assignee: hangas → sspitzer
Seth this looks like it might be the same bug you are working on for mailnews.
Here is the log: Calling chain using A6/R1 links Back chain ISA Caller 00000000 PPC 1BD56EC4 0B01E9C0 PPC 1BD461AC main+00188 0B01E930 PPC 1BD45AD8 main1(int, char**, nsISplashScreen*)+00624 0B01E840 PPC 1B360BF4 nsAppShellService::Run()+00018 0B01E800 PPC 1B332964 nsAppShell::Run()+00038 0B01E7B0 PPC 1B333060 nsMacMessagePump::DoMessagePump()+0003C 0B01E760 PPC 1B333368 nsMacMessagePump::DispatchEvent(int, EventRecord*)+ 00174 0B01E710 PPC 1BCBD8D4 Repeater::DoRepeaters(const EventRecord&)+00030 0B01E6D0 PPC 1B317544 nsMacNSPREventQueueHandler::RepeatAction(const EventRecord&)+000 0C 0B01E690 PPC 1B31765C nsMacNSPREventQueueHandler::ProcessPLEventQueue()+ 000B0 0B01E620 PPC 1B46C8AC nsEventQueueImpl::ProcessPendingEvents()+000E4 0B01E5C0 PPC 1B46C800 nsEventQueueImpl::ProcessPendingEvents()+00038 0B01E560 PPC 1B4C71D8 PL_ProcessPendingEvents+0004C 0B01E520 PPC 1B4C72C0 PL_HandleEvent+00020 0B01E4E0 PPC 1B2E01BC nsStreamListenerEvent::HandlePLEvent(PLEvent*)+00024 0B01E4A0 PPC 1B2E1010 nsOnStopRequestEvent::HandleEvent()+00040 0B01E450 PPC 1BC87B84 nsFileChannel::OnStopRequest(nsIChannel*, nsISupports*, unsigned int, const unsigned short*)+00030 0B01E400 PPC 1BC99CE4 nsResChannel::OnStopRequest(nsIChannel*, nsISupports*, unsigned int, const unsigned short*)+000A8 0B01E3B0 PPC 1BC99D80 nsResChannel::EndRequest(unsigned int, const unsigned short*)+00 030 0B01E370 PPC 1B301774 nsStreamLoader::OnStopRequest(nsIChannel*, nsISupports*, unsigne d int, const unsigned short*)+0008C 0B01E300 PPC 1B20928C nsXULDocument::OnStreamComplete(nsIStreamLoader*, nsISupports*, unsigned int, unsigned int, const char*)+000C8 0B01E290 PPC 1B208C5C nsXULDocument::ResumeWalk()+00DBC 0B01DBB0 PPC 1B1FF028 nsXULDocument::ResolveForwardReferences()+00080 0B01DB50 PPC 1B20BA64 nsXULDocument::OverlayForwardReference::Resolve()+ 00180 0B01DA10 PPC 1B20BE40 nsXULDocument::OverlayForwardReference::Merge(nsIContent*, nsICo ntent*)+002FC 0B01D8A0 PPC 1B2015FC nsXULDocument::AddSubtreeToDocument(nsIContent*)+ 00328 0B01D750 PPC 1B2015A8 nsXULDocument::AddSubtreeToDocument(nsIContent*)+ 002D4 0B01D600 PPC 1B24BB28 nsXULElement::ChildAt(int, nsIContent*&) const+0001C 0B01D590 PPC 1B24FD7C nsXULElement::EnsureContentsGenerated() const+000E4 0B01D510 PPC 1B1FEAD4 nsXULDocument::CreateContents(nsIContent*)+00098 0B01D4C0 PPC 1B27A7E4 RDFGenericBuilderImpl::CreateContents(nsIContent*)+ 00054 0B01D470 PPC 1B27F0BC RDFGenericBuilderImpl::CreateTemplateAndContainerContents(nsICon tent*, nsIContent**, int*)+00150 0B01D350 PPC 1B27F3E0 RDFGenericBuilderImpl::CreateContainerContents(nsIContent*, nsIR DFResource*, int, nsIContent**, int*)+00244 0B01D1E0 PPC 1B2729F8 RootNode::Propogate(const InstantiationSet&, void*)+ 00044 0B01D190 PPC 1B272CCC TestNode::Propogate(const InstantiationSet&, void*)+ 00098 0B01D110 PPC 1B272C64 TestNode::Propogate(const InstantiationSet&, void*)+ 00030 0B01D090 PPC 1B2776E0 RDFContainerMemberTestNode::FilterInstantiations(InstantiationSe t&) const+01214 Return addresses on the stack Stack Addr Frame Addr ISA Caller 0B01CEE8 PPC 1B1E2338 RDFServiceImpl::RegisterResource(nsIRDFResource*, i nt)+000DC 0B01CED8 PPC 1BD3499C malloc+00040 0B01CECC 68K 0000000E 0B01CEC8 68K 09E20FEE 0B01CE88 0B01CE80 PPC 1B906994 PL_HashTableRawAdd+00134 0B01CE78 0B01CE70 PPC 1B8CC450 nsAbRDFResource::Release()+0000C 0B01CE68 0B01CE60 PPC 1B91BAAC PR_Malloc+00014 0B01CE58 68K 0000000E 0B01CE48 0B01CE40 PPC 1B906560 PL_ArenaFinish+000CC 0B01CE28 PPC 1BD3499C malloc+00040 0B01CE24 68K 09E20FB2 0B01CE20 68K 09E20FB2 0B01CE08 0B01CE00 PPC 1B91BAAC PR_Malloc+00014 0B01CDC8 0B01CDC0 PPC 1BD3499C malloc+00040 0B01CDBC 68K 0000000E 0B01CD88 PPC 1B2821F0 RDFGenericBuilderImpl::ContentIdTestNode::FilterIns tantiations(InstantiationSet&) const+00870 0B01CD58 PPC 1B906804 PL_HashTableRawLookup+0005C 0B01CD48 0B01CD40 PPC 1B45BD44 nsCOMPtr_base::~nsCOMPtr_base()+00030 0B01CD28 PPC 1B271C2C BindingSet::GetBindingFor(int, Value*) const+0008C 0B01CD18 0B01CD10 PPC 1B270CEC MemoryElementSet::Add(MemoryElement*)+ 00120 0B01CD08 0B01CD00 PPC 1B454888 nsSupportsArray::Release()+00040 0B01CCE8 0B01CCE0 PPC 1BD33AA0 operator new(unsigned long, const std::nothrow_t&)+ 00014 0B01CCD8 0B01CCD0 PPC 1BD33B10 operator new(unsigned long)+00010 0B01CCC8 0B01CCC0 PPC 1B4546B0 nsSupportsArray::~nsSupportsArray()+ 0003C 0B01CCA8 0B01CCA0 PPC 1BD3499C malloc+00040 0B01CC88 0B01CC80 PPC 1B454A98 nsSupportsArray::DeleteArray()+0001C 0B01CC68 0B01CC60 PPC 1BD33B54 operator delete(void*)+00014 0B01CC58 0B01CC50 PPC 1BD33AA0 operator new(unsigned long, const std::nothrow_t&)+ 00014 0B01CC48 0B01CC40 PPC 19BDC7A8 nsGenericElement::SetDocumentInChildrenOf(nsIConten t*, nsIDocument*)+00024 0B01CC38 0B01CC30 PPC 1BD3499C malloc+00040 0B01CC28 0B01CC20 PPC 1BD34A04 free+00030 0B01CBF8 0B01CBF0 PPC 1B45BD44 nsCOMPtr_base::~nsCOMPtr_base()+00030 0B01CBE8 0B01CBE0 PPC 1B47804C nsStr::StrCompare(const nsStr&, const nsStr&, int, int)+000B8 0B01CBB8 68K 00000016 0B01CBA8 0B01CBA0 PPC 1B218C94 nsXULAttributes::SetInlineStyleRule(nsIStyleRule*)+ 00010 0B01CB98 PPC 1B2776E0 RDFContainerMemberTestNode::FilterInstantiations(In stantiationSet&) const+01214 0B01CB8C 68K 09E20FB2 0B01CB48 0B01CB40 PPC 1B1EA58C CompositeDataSourceImpl::GetTargets(nsIRDFResource* , nsIRDFResource*, int, nsISimpleEnumerator**)+000B0 0B01CB18 0B01CB10 PPC 1B1E8A40 CompositeEnumeratorImpl::Release()+ 00040 0B01CB08 0B01CB00 PPC 1BD33B10 operator new(unsigned long)+00010 0B01CAF8 0B01CAF0 PPC 1B1E8C9C CompositeEnumeratorImpl::HasMoreElements(int*)+0008 0 Displaying memory from 0 00000000 FFC1 0000 FFC1 0000 0036 A346 0036 A348 *¡••*¡•••6£F•6£H 00000010 0036 A34A 0036 A34C 0086 E2FC 0086 E2FC •6£J•6£L•Ü‚¸•Ü‚¸ Closing log
I'm not sure that this is related to #34438 as soon as I'm done building, I'll investigate.
Status: NEW → ASSIGNED
Summary: Crash launching addressbook from tasks menu → Crash launching addressbook from tasks menu
fix in hand. seeking review from waterson. Index: base/src/nsCompositeDataSource.cpp =================================================================== RCS file: /cvsroot/mozilla/rdf/base/src/nsCompositeDataSource.cpp,v retrieving revision 1.41 diff -p -r1.41 nsCompositeDataSource.cpp *** nsCompositeDataSource.cpp 2000/03/24 02:40:24 1.41 --- nsCompositeDataSource.cpp 2000/04/04 20:47:08 *************** CompositeEnumeratorImpl::HasMoreElements *** 225,230 **** --- 225,235 ---- PRInt32 i; PRBool hasMore; + + if (!mCurrent) { + break; + } + rv = mCurrent->HasMoreElements(&hasMore); if (NS_FAILED(rv)) return rv;
Target Milestone: --- → M15
marking blocker. adding granrose to the cc list.
Severity: critical → blocker
talked to granrose, marking back to critical.
Severity: blocker → critical
I think that GetEnumerator() should *always* return an enumerator (NS_NewEmptyEnumerator, at a minimum) if it returns NS_OK. So this makes RDF be paranoid and assert if that's not the case.
testing waterson's new patch.
waterson's patch works fine. as soon as I get the word, I'll check it in. then I'll go see about these assertions: ###!!! ASSERTION: you're always supposed to return an enumerator from GetEnumerator, punk.: 'mCurrent != nsnull', file nsCompositeDataSource.cpp, line 223 ###!!! Break: at file nsCompositeDataSource.cpp, line 223 ###!!! ASSERTION: you're always supposed to return an enumerator from GetEnumerator, punk.: 'mCurrent != nsnull', file nsCompositeDataSource.cpp, line 223 ###!!! Break: at file nsCompositeDataSource.cpp, line 223 prefillAccount = null ###!!! ASSERTION: you're always supposed to return an enumerator from GetEnumerator, punk.: 'mCurrent != nsnull', file nsCompositeDataSource.cpp, line 223 ###!!! Break: at file nsCompositeDataSource.cpp, line 223 ###!!! ASSERTION: you're always supposed to return an enumerator from GetEnumerator, punk.: 'mCurrent != nsnull', file nsCompositeDataSource.cpp, line 223 ###!!! Break: at file nsCompositeDataSource.cpp, line 223
this is XP. I get the same crash on win32.
OS: Linux → All
updating status whiteboard.
Whiteboard: fix in hand
The new <template> code exposed a latent bug in nsDirectoryDataSource.cpp here: http://lxr.mozilla.org/mozilla/source/mailnews/addrbook/src/nsDirectoryDataSour ce.cpp#197 If GetTargets() is called with a "directory" resource (i.e., one that is QI()-able to nsIAbDirectory), but the property that is being asked for is not one of the four properties that the datasource knows about, we miss the "else" case and fail to fill in an out value for "targets" (but still return NS_OK -- because the QI() succeeded and stuffed the result into "rv"). I'd suggest a couple of things here: 1. Re-code the logic "early return" in each of the handled cases. 2. Remove the final "else" statement 3. Replace the final "return rv" with "return NS_NewEmptyEnumerator(targets)". "NS_NewEmptyEnumerator()" returns a static, global, shared empty nsISimpleEnumerator, and doesn't require any allocation overhead. (The current code allocates a new, empty enumerator -- outch!) scottip: cc'ing you to see if there are any places in the folder or message datasource that could benefit from this as well.
Keywords: dogfood
fix checked in. now we just assert. now all we need to do is follow waterson's suggestions. re-assigning to chuang. candice, look at waterson's comments in this bug report on how to fix this in nsDirectoryDataSource.cpp
Assignee: sspitzer → chuang
Status: ASSIGNED → NEW
Keywords: crash, dogfood
Summary: Crash launching addressbook from tasks menu → asserts launching addressbook from tasks menu
Whiteboard: fix in hand
Mass moving to M16 to get these off the M15 radar. Please let me know if this is really an M15 stopper.
Target Milestone: M15 → M16
Status: NEW → ASSIGNED
I will fix for both nsDirectoryDataSource.cpp and nsCardDataSource.cpp.
Not M16 stopper, marking M17.
Target Milestone: M16 → M17
Fixed in April.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
VERIFIED, WORKSFORME using Linux 2000122610.
Status: RESOLVED → VERIFIED
QA Contact: lchiang → stephend
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: