Closed Bug 1358140 Opened 9 years ago Closed 9 years ago

Infinite recursion then crash during compact of an IMAP folder

Categories

(MailNews Core :: Networking: IMAP, defect)

defect
Not set
critical

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 1158578

People

(Reporter: jhorak, Unassigned)

References

Details

(Keywords: crash)

Our user is reporting infinite recursion lockup and subsequent crash when he tries to compact IMAP4 folder. I'm unable to reproduce by myself, but stack trace looks quite convincing: https://bugzilla.redhat.com/attachment.cgi?id=1272674 -- snip -- #28 0x00007f77c1b4238d in nsOfflineStoreCompactState::CopyNextMessage(bool&) (this=this@entry=0x7f7768f32000, done=@0x7fffe7a18d93: false) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/base/src/nsMsgFolderCompactor.cpp:1037 #29 0x00007f77c1b425f2 in nsOfflineStoreCompactState::OnStopRequest(nsIRequest*, nsISupports*, nsresult) (this=0x7f7768f32000, request=<optimized out>, ctxt=<optimized out>, status=<optimized out>) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/base/src/nsMsgFolderCompactor.cpp:1104 #30 0x00007f77c1e066d5 in mozilla::net::nsStreamListenerTee::OnStopRequest(nsIRequest*, nsISupports*, nsresult) (this=0x7f7781d1dbc0, request=0x7f7781d69090, context=0x7f77791465f8, status=-2141913056) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/base/nsStreamListenerTee.cpp:51 #31 0x00007f77c1c47109 in nsImapMockChannel::ReadFromImapConnection() (this=this@entry=0x7f7781d69090) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapProtocol.cpp:9403 #32 0x00007f77c1c49112 in nsImapMockChannel::OnCacheEntryAvailable(nsICacheEntry*, bool, nsIApplicationCache*, nsresult) (this=0x7f7781d69090, entry=0x7f777913e700, aNew=<optimized out>, aAppCache=<optimized out>, status=<optimized out>) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapProtocol.cpp:9101 #33 0x00007f77c1f47f55 in mozilla::net::CacheEntry::InvokeAvailableCallback(mozilla::net::CacheEntry::Callback const&) (this=this@entry=0x7f7779127de0, aCallback=...) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:890 #34 0x00007f77c1f483a1 in mozilla::net::CacheEntry::InvokeCallback(mozilla::net::CacheEntry::Callback&) (this=0x7f7779127de0, aCallback=...) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:812 #35 0x00007f77c1f46d96 in mozilla::net::CacheEntry::InvokeCallbacks(bool) (this=this@entry=0x7f7779127de0, aReadOnly=aReadOnly@entry=false) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:679 #36 0x00007f77c1f46f00 in mozilla::net::CacheEntry::InvokeCallbacks() (this=0x7f7779127de0) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:620 #37 0x00007f77c1f48b99 in mozilla::net::CacheEntry::Open(mozilla::net::CacheEntry::Callback&, bool, bool, bool) (this=this@entry=0x7f7779127de0, aCallback=..., aTruncate=aTruncate@entry=false, aPriority=aPriority@entry=false, aBypassIfBusy=aBypassIfBusy@entry=false) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:341 #38 0x00007f77c1f48ca3 in mozilla::net::CacheEntry::AsyncOpen(nsICacheEntryOpenCallback*, unsigned int) (this=0x7f7779127de0, aCallback=aCallback@entry=0x7f7781d69098, aFlags=aFlags@entry=0) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheEntry.cpp:315 #39 0x00007f77c1f547b5 in mozilla::net::CacheStorage::AsyncOpenURI(nsIURI*, nsACString_internal const&, unsigned int, nsICacheEntryOpenCallback*) (this=0x7f77760ffe40, aURI=<optimized out>, aIdExtension=..., aFlags=0, aCallback=0x7f7781d69098) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mozilla/netwerk/cache2/CacheStorage.cpp:112 #40 0x00007f77c1c479cd in nsImapMockChannel::OpenCacheEntry() (this=this@entry=0x7f7781d69090) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapProtocol.cpp:9218 #41 0x00007f77c1c47dd1 in nsImapMockChannel::AsyncOpen(nsIStreamListener*, nsISupports*) (this=0x7f7781d69090, listener=<optimized out>, ctxt=0x7f77791465f8) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapProtocol.cpp:9541 #42 0x00007f77c1c62beb in nsImapService::GetMessageFromUrl(nsIImapUrl*, int, nsIMsgFolder*, nsIImapMessageSink*, nsIMsgWindow*, nsISupports*, bool, nsIURI**) (this=this@entry=0x7f7785dff1a0, aImapUrl=<optimized out>, aImapAction=aImapAction@entry=268435510, aImapMailFolder=<optimized out>, aImapMessage=<optimized out>, aMsgWindow=aMsgWindow@entry=0x7f7794738c40, aDisplayConsumer=0x7f7768f32000, aConvertDataToText=false, aURL=0x7fffe7a19a88) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapService.cpp:1109 #43 0x00007f77c1c63325 in nsImapService::StreamMessage(char const*, nsISupports*, nsIMsgWindow*, nsIUrlListener*, bool, nsACString_internal const&, bool, nsIURI**) (this=0x7f7785dff1a0, aMessageURI=<optimized out>, aConsumer=0x7f7768f32000, aMsgWindow=0x7f7794738c40, aUrlListener=<optimized out>, aConvertData=<optimized out>, aAdditionalHeader=..., aLocalOnly=true, aURL=0x7fffe7a19a88) at /usr/src/debug/thunderbird-52.0/thunderbird-52.0/mailnews/imap/src/nsImapService.cpp:1210 #44 0x00007f77c1b4238d in nsOfflineStoreCompactState::CopyNextMessage(bool&) (this=this@entry=0x7f7768f32000, done=@0x7fffe7a19af3: false) -- snip -- Maybe just a wild guess, probably message db is damaged it thinks that message is available offline [1], but it isn't so the nsImapMockChannel::OnCacheEntryAvailable ends by calling ReadFromImapConnection (which fails because localOnly is set) and nsOfflineStoreCompactState::OnStopRequest obtains NS_MSG_ERROR_MSG_NOT_OFFLINE. The major question is: should we really call CopyNextMessage() there [2]? I've got an impression that the processing all messages in folder are already done in nsOfflineStoreCompactState::CopyNextMessage in while loop. Downstream report: https://bugzilla.redhat.com/show_bug.cgi?id=1443646 [1] https://dxr.mozilla.org/comm-central/rev/5e4e889f13eb1fd5091f60921a1566c661f2c630/mailnews/imap/src/nsImapService.cpp#1199 [2] https://dxr.mozilla.org/comm-central/rev/5e4e889f13eb1fd5091f60921a1566c661f2c630/mailnews/base/src/nsMsgFolderCompactor.cpp#1129
Reporter does have this problem only on Thunderbird 52, Thunderbird 45.8 is without this issue.
yes, bug 1158578 is where the action is
Severity: normal → critical
Status: NEW → RESOLVED
Closed: 9 years ago
Keywords: crash
Resolution: --- → DUPLICATE
Summary: Infinite recursion during compact of an IMAP folder → Infinite recursion then crash during compact of an IMAP folder
You need to log in before you can comment on or make changes to this bug.