Closed Bug 451257 Opened 16 years ago Closed 16 years ago

Composing a message after the contacts sidebar was closed sometimes crashes Thunderbird

Categories

(MailNews Core :: Address Book, defect, P4)

defect

Tracking

(Not tracked)

VERIFIED FIXED
Thunderbird 3.0a3

People

(Reporter: whimboo, Assigned: standard8)

References

(Blocks 1 open bug)

Details

(Keywords: crash, regression, Whiteboard: [STR comment 8])

Attachments

(1 file)

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1a2pre) Gecko/20080819030054 Shredder/3.0b1pre ID:20080819030054 Shredder will crash if you open a saved draft message which has a recipient for whom the name was changed in between. Looks like a bad synchronization with the OS X address book. See following steps to reproduce the crash: 1. Create a new card and set an email and last name 2. Compose a new message to that person and save it as draft 3. Change the card entry by removing the last name and set a first name 4. Go back to Shredder and open the draft folder => You can see that only the header pane shows the updated name. The recipient column still has the last name. 5. Try to open the saved draft message => The compose window is shown for about 5 seconds while the beach ball is displayed. The crash happens immediately. Crash id: bp-54a8358a-6e34-11dd-b8fa-001a4bd43e5c The stack trace doesn't look very helpful. But pasting anyway: 0 thunderbird-bin pixman_malloc_abc 1 thunderbird-bin pixman_malloc_abc 2 thunderbird-bin nsScriptableRegion::nsScriptableRegion 3 thunderbird-bin nsScriptableRegion::nsScriptableRegion 4 thunderbird-bin nsScriptableRegion::nsScriptableRegion 5 libxpcom_core.dylib NS_InvokeByIndex_P 6 thunderbird-bin MOZ_Z_inflateEnd 7 thunderbird-bin MOZ_Z_inflateEnd 8 libmozjs.dylib js_Invoke 9 libmozjs.dylib JS_CompareValues 10 libmozjs.dylib js_Invoke 11 thunderbird-bin MOZ_Z_inflateEnd 12 thunderbird-bin MOZ_Z_adler32 13 libxpcom_core.dylib NS_InvokeByIndex_P 14 libxpcom_core.dylib NS_InvokeByIndex_P 15 thunderbird-bin nsScriptableRegion::nsScriptableRegion 16 thunderbird-bin nsScriptableRegion::nsScriptableRegion 17 thunderbird-bin NS_HexToRGB 18 thunderbird-bin NS_HexToRGB 19 thunderbird-bin NS_HexToRGB 20 thunderbird-bin NS_HexToRGB 21 thunderbird-bin nsScriptableRegion::nsScriptableRegion 22 thunderbird-bin NS_HexToRGB 23 libxpcom_core.dylib NS_InvokeByIndex_P 24 thunderbird-bin MOZ_Z_inflateEnd 25 thunderbird-bin MOZ_Z_inflateEnd 26 libmozjs.dylib js_Invoke 27 libmozjs.dylib JS_CompareValues 28 libmozjs.dylib js_Invoke 29 thunderbird-bin MOZ_Z_inflateEnd 30 thunderbird-bin MOZ_Z_adler32 31 libxpcom_core.dylib NS_InvokeByIndex_P 32 libxpcom_core.dylib NS_InvokeByIndex_P 33 thunderbird-bin nsScriptableRegion::nsScriptableRegion 34 thunderbird-bin nsMsgDBFolder::GetMsgTextFromStream 35 thunderbird-bin nsMsgDBFolder::GetMsgTextFromStream 36 thunderbird-bin nsScriptableRegion::nsScriptableRegion 37 thunderbird-bin nsMsgProtocol::OnStopRequest 38 thunderbird-bin nsMsgDBFolder::GetMsgTextFromStream 39 thunderbird-bin XRE_GetFileFromPath 40 thunderbird-bin XRE_GetFileFromPath 41 libxpcom_core.dylib non-virtual thunk to nsHashPropertyBag::SetPropertyAsAUTF8String 42 libxpcom_core.dylib NS_SetGlobalThreadObserver 43 libxpcom_core.dylib NS_ProcessPendingEvents_P 44 thunderbird-bin MOZ_Z_deflateInit2_ 45 thunderbird-bin nsScriptableRegion::nsScriptableRegion 46 CoreFoundation CoreFoundation@0x72614 47 CoreFoundation CoreFoundation@0x72cf7 48 HIToolbox HIToolbox@0x2fda3 49 HIToolbox HIToolbox@0x2faf5 50 HIToolbox HIToolbox@0x2fa30 51 AppKit AppKit@0x40504 52 AppKit AppKit@0x3fdb7 53 AppKit AppKit@0x38df2 54 thunderbird-bin nsScriptableRegion::nsScriptableRegion 55 thunderbird-bin nsScriptableRegion::nsScriptableRegion 56 thunderbird-bin XRE_main 57 thunderbird-bin start 58 thunderbird-bin start 59 thunderbird-bin start 60 @0x1
Flags: blocking-thunderbird3?
Flags: blocking-thunderbird3.0b1?
FWIW I've just tried this and it worked fine. This looks more like a backend graphics problem that a mailnews problem.
Keywords: qawanted
Looks like. But I was able to crash Thunderbird again while using the same steps from comment 0. This time I didn't get a stack. Looks like we have to wait until this information is available again.
assuming reproducibility, this blocks tb3.
Flags: blocking-thunderbird3? → blocking-thunderbird3+
Target Milestone: --- → Thunderbird 3.0b1
using milestones, not b1 flags.
Flags: blocking-thunderbird3.0b1?
This has nothing to do with the OS X address book. Some minutes ago I've seen the same behavior while trying to verify the fix on bug 366482. I opened a saved message, used the context menu first to edit the message and afterwards the main menu entry. After the last action some parts of the message compose window were disabled and no text filed into all the fields and body. After about 5s Shredder crashed. Once again a useless crash id: bp-f924c259-7211-11dd-96a7-001a4bd43ef6
Summary: Crash when opening a draft message after the recipients name has been updated in the OS X address book [@ pixman_malloc_abc] → Using "Edit as new" for random messages sometimes crashes Thunderbird [@ pixman_malloc_abc]
Setting low priority until we can get STR.
Priority: -- → P4
Whiteboard: needs STR
I tried to find some STR to get it to crash reproducible but wasn't successful at all. At least I have some more information which could bring us closer to the problem: The crash happens when trying to compose a message when the user has closed the contacts sidebar in the last compose window and canceled the composition. This way I was able to reproduce it each time until I decided to close Shredder after the canceling of the first compose window. After a restart the sidebar isn't shown anymore and I can open compose windows without crashing. Even showing/hiding the Contacts Sidebar doesn't bring up the crash. So there has to something which basically introduces this crash which I haven't found yet.
Summary: Using "Edit as new" for random messages sometimes crashes Thunderbird [@ pixman_malloc_abc] → Composing a message after the contacts sidebar was closed sometimes crashes Thunderbird [@ pixman_malloc_abc]
Mark, could you try if this is reproducible for you? 1. Start Shredder and click Write to open a compose window 2. Make visible the Contacts Sidebar 3. Cancel composition by clicking the red close icon 4. Restart Shredder 5. Click Write to open the compose window and make sure the sidebar is shown 6. Close the sidebar 7. Cancel composition again 8. Click again on Write => After step 8 Shredder crashes for me each time. It doesn't depend on which address book you have select. Even happens with the Personal Addressbook. But the OS X one is still enabled.
Also happens on Windows. Probably something in my profile has messed-up. I'll have a closer investigation.
OS: Mac OS X → All
Crashed thread reported by Apples crash reporter: Thread 1 Crashed: 0 libSystem.B.dylib 0x92bc8dbe __semwait_signal_nocancel + 10 1 libSystem.B.dylib 0x92bbac87 usleep$NOCANCEL$UNIX2003 + 61 2 libSystem.B.dylib 0x92bdc48b abort + 85 3 libSystem.B.dylib 0x92baf007 internal_catch_exception_raise + 118 4 libSystem.B.dylib 0x92b9d7b0 _Xexception_raise + 250 5 libSystem.B.dylib 0x92b9d683 exc_server + 117 6 org.mozilla.thunderbird 0x004305e9 nsScriptableRegion::nsScriptableRegion(nsIRegion*) + 3592573 7 libSystem.B.dylib 0x92b186f5 _pthread_start + 321 8 libSystem.B.dylib 0x92b185b2 thread_start + 34
Summary: Composing a message after the contacts sidebar was closed sometimes crashes Thunderbird [@ pixman_malloc_abc] → Composing a message after the contacts sidebar was closed sometimes crashes Thunderbird
Finally I know what that happens. I've a broken abook.mab which causes Shredder to crash with the above given steps. Is there any way to clean up this file so already deleted address cards can be removed? Editing this file doesn't seem to be an easy job and I wont attach an testcase with a lot of included email addresses.
Component: Mail Window Front End → Message Compose Window
Keywords: qawanted
QA Contact: front-end → message-compose
Whiteboard: needs STR
The steps above are WFM with Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.16) Gecko/20080707 Thunderbird/2.0.0.16 Mnenhy/0.7.5.0 ID:2008070710 So it's a regression. When I've time I'll try to find out the regression range later today.
Keywords: regression
Whiteboard: [needs regression range]
Surprisingly this regressed not too long ago. The regression window is between the following builds: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1pre) Gecko/2008070203 Thunderbird/3.0a2pre ID:2008070203 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.2pre) Gecko/2008070304 Thunderbird/3.0a2pre ID:2008070304 Checkins within this time: http://tinyurl.com/5abp38 Possible candidates are bug 438035 or bug 443035. On both Mark is the assignee. Looks like that I should start to build my own debug builds again to get a better stack trace.
Whiteboard: [needs regression range]
Yep I can reproduce with STR from comment 8.
Whiteboard: [STR comment 8]
Top 20 frames from the debugger output: #0 0x138d4560 in nsTreeSelection::GetSingle (this=0x18b52390, aSingle=0xbfff7da8) at /Users/henrik/mozilla/comm-central/src/mozilla/layout/xul/base/src/tree/src/nsTreeSelection.cpp:305 #1 0x138d51f4 in nsTreeSelection::RangedSelect (this=0x18b52390, aStartIndex=0, aEndIndex=0, aAugment=1) at /Users/henrik/mozilla/comm-central/src/mozilla/layout/xul/base/src/tree/src/nsTreeSelection.cpp:433 #2 0x1c0b23d2 in nsAbView::ReselectCards (this=0x18b5c260, aCards=0x18b6d220, aIndexCard=0x18b6d250) at /Users/henrik/mozilla/comm-central/src/mailnews/addrbook/src/nsAbView.cpp:1054 #3 0x1c0b5a7b in nsAbView::SortBy (this=0x18b5c260, colID=0xbfff80bc, sortDir=0x18b4fcf8) at /Users/henrik/mozilla/comm-central/src/mailnews/addrbook/src/nsAbView.cpp:716 #4 0x1c0b3be2 in nsAbView::SetView (this=0x18b5c260, aAddressBook=0x18b5c84c, aAbViewListener=0x0, aSortColumn=@0xbfff8660, aSortDirection=@0xbfff8670, aResult=@0xbfff8310) at /Users/henrik/mozilla/comm-central/src/mailnews/addrbook/src/nsAbView.cpp:243 #5 0x0048b2cd in NS_InvokeByIndex_P (that=0x18b5c260, methodIndex=3, paramCount=5, params=0xbfff83a4) at /Users/henrik/mozilla/comm-central/src/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp:179 #6 0x1154548b in XPCWrappedNative::CallMethod (ccx=@0xbfff85f0, mode=XPCWrappedNative::CALL_METHOD) at /Users/henrik/mozilla/comm-central/src/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp:2393 #7 0x1154fd65 in XPC_WN_CallMethod (cx=0x19c303b0, obj=0x180f1300, argc=4, argv=0xc9d360, vp=0xbfff870c) at /Users/henrik/mozilla/comm-central/src/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp:1473 #8 0x0026271b in js_Invoke (cx=0x19c303b0, argc=4, vp=0xc9d358, flags=2) at jsinterp.cpp:1308 #9 0x00246093 in js_Interpret (cx=0x19c303b0) at /Users/henrik/mozilla/comm-central/src/mozilla/js/src/jsinterp.cpp:4964 #10 0x002627ac in js_Invoke (cx=0x19c303b0, argc=1, vp=0xc9d2bc, flags=0) at jsinterp.cpp:1326 #11 0x1153f26c in nsXPCWrappedJSClass::CallMethod (this=0x1bf641b0, wrapper=0x18b2e2b0, methodIndex=3, info=0x927630, nativeParams=0xbfff9e44) at /Users/henrik/mozilla/comm-central/src/mozilla/js/src/xpconnect/src/xpcwrappedjsclass.cpp:1523 #12 0x1153707d in nsXPCWrappedJS::CallMethod (this=0x18b2e2b0, methodIndex=3, info=0x927630, params=0xbfff9e44) at /Users/henrik/mozilla/comm-central/src/mozilla/js/src/xpconnect/src/xpcwrappedjs.cpp:565 #13 0x0048b5b0 in PrepareAndDispatch (self=0x18b50ef0, methodIndex=3, args=0xbfff9f64) at /Users/henrik/mozilla/comm-central/src/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_x86.cpp:93 #14 0x0048b60f in nsXPTCStubBase::Stub3 (this=0x18b50ef0) at xptcstubsdef.inc:1 #15 0x1359f3f3 in nsEventListenerManager::HandleEventSubType (this=0x19c72e40, aListenerStruct=0x19cd5138, aListener=0x18b50ef0, aDOMEvent=0x18ac99e0, aCurrentTarget=0x19c3022c, aPhaseFlags=4) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventListenerManager.cpp:1079 #16 0x135a0f85 in nsEventListenerManager::HandleEvent (this=0x19c72e40, aPresContext=0x19c6fe10, aEvent=0x18ac9a10, aDOMEvent=0xbfffa240, aCurrentTarget=0x19c3022c, aFlags=4, aEventStatus=0xbfffa244) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventListenerManager.cpp:1184 #17 0x135d2cfa in nsEventTargetChainItem::HandleEvent (this=0xbb2e20, aVisitor=@0xbfffa238, aFlags=4) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventDispatcher.cpp:211 #18 0x135d2de6 in nsEventTargetChainItem::HandleEventTargetChain (this=0xbb2e40, aVisitor=@0xbfffa238, aFlags=6, aCallback=0x0) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventDispatcher.cpp:242 #19 0x135d36e1 in nsEventDispatcher::Dispatch (aTarget=0x19c72e10, aPresContext=0x19c6fe10, aEvent=0x18ac9a10, aDOMEvent=0x18ac99e0, aEventStatus=0xbfffa328, aCallback=0x0) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventDispatcher.cpp:479 #20 0x135d3a16 in nsEventDispatcher::DispatchDOMEvent (aTarget=0x19c72e10, aEvent=0x0, aDOMEvent=0x18ac99e0, aPresContext=0x19c6fe10, aEventStatus=0xbfffa328) at /Users/henrik/mozilla/comm-central/src/mozilla/content/events/src/nsEventDispatcher.cpp:542
(In reply to comment #15) > Top 20 frames from the debugger output: > > #0 0x138d4560 in nsTreeSelection::GetSingle (this=0x18b52390, aSingle=0xbfff7da8) at > /Users/henrik/mozilla/comm-central/src/mozilla/layout/xul/base/src/tree/src/nsTreeSelection.cpp:305 If your line numbers match up with mine then mTree is null at this point. Looking through the various tree selection methods it seems that: GetSingle doesn't null-check SetCurrentIndex null-checks and null-checks again SetCurrentColumn doesn't null-check
Before the crash occurs I get following assertion: ###!!! ASSERTION: You can't dereference a NULL nsCOMPtr with operator->().: 'mRawPtr != 0', file ../../../../dist/include/xpcom/nsCOMPtr.h, line 811
Attached patch Temporary fix (at least) (deleted) — Splinter Review
So it turns out that what we should be doing is to null our own mTree and mTreeSelection in ClearView() - I knew I should have kept our code in there. This is called when we close the compose window or at other times. The abResultsTree.js code re-sets the tree once it has initialised the view and all is then happy. Whilst nsTree* needs fixing, I think we should still fix this here. The other possibility for what we should do would be to set the tree on nsAbView creation (or rather tell the tree the view when nsAbView is created), so only set them up once and only detach on shutdown. This should work, but I think I'd like to cover it in a follow up bug when I have more time, so that I can check if there are any performance regressions (and work out the code to handle those).
Assignee: nobody → bugzilla
Status: NEW → ASSIGNED
Attachment #336267 - Flags: superreview?(neil)
Attachment #336267 - Flags: review?(neil)
Comment on attachment 336267 [details] [diff] [review] Temporary fix (at least) The code looks reasonable given the intent of the method, but passing the review over to someone who is known to be able to reproduce the crash ;-)
Attachment #336267 - Flags: superreview?(neil)
Attachment #336267 - Flags: superreview+
Attachment #336267 - Flags: review?(neil)
Attachment #336267 - Flags: review?(hskupin)
Comment on attachment 336267 [details] [diff] [review] Temporary fix (at least) Yes, that fixes the crash and improves the code after it was commented out by bug 438035.
Attachment #336267 - Flags: review?(hskupin) → review+
Assignee: bugzilla → nobody
Blocks: 438035
Component: Message Compose Window → Address Book
No longer depends on: 243631
Product: Thunderbird → MailNews Core
QA Contact: message-compose → addressbook
Assignee: nobody → bugzilla
Blocks: 453277
Checked in, changeset id: 246:1ef1c2e849b1 Filed bug 453277 on the possibility for improving how nsAbView works wrt nulling out the tree.
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Verified with Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b1pre) Gecko/20080902031659 Shredder/3.0b1pre
Status: RESOLVED → VERIFIED
(In reply to comment #11) > Finally I know what that happens. I've a broken abook.mab which causes Shredder > to crash with the above given steps. Is there any way to clean up this file so > already deleted address cards can be removed? Editing this file doesn't seem to > be an easy job and I wont attach an testcase with a lot of included email > addresses. Commenting for the record. The Abook.mab I cloned into my Shredder profile also contained deleted card data that did not purge when the contact was removed. I am not aware that Tb 2 has misbehaved as a result. Ref Bug 449759.
(In reply to comment #24) > Commenting for the record. The Abook.mab I cloned into my Shredder profile > also contained deleted card data that did not purge when the contact was > removed. I am not aware that Tb 2 has misbehaved as a result. This is bug 65086 by the way.
(In reply to comment #25) > (In reply to comment #24) > > Commenting for the record. The Abook.mab I cloned into my Shredder profile > > also contained deleted card data that did not purge when the contact was > > removed. I am not aware that Tb 2 has misbehaved as a result. > > This is bug 65086 by the way. Thank You for the bug reference to the Abook size issue. My comment #24 was to add related information from Bug 449759 that was duped to this bug.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: