Closed Bug 1457409 Opened 7 years ago Closed 5 years ago

Crash: maildir code doesn't do enough error checking

Categories

(MailNews Core :: Database, defect)

x86_64
macOS
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED
Thunderbird 63.0

People

(Reporter: BenB, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: crash, Whiteboard: [fixed by bug 1275948])

The maildir code doesn't do enough error checking. For this case it looks like the code alerts you and crashes anyway: mailnews/local/src/nsMsgMaildirStore.cpp https://dxr.mozilla.org/comm-central/source/mailnews/local/src/nsMsgMaildirStore.cpp#794 Starting with line 794: nsCOMPtr<nsIMsgDBHdr> newHdr; if (destMailDB) rv = destMailDB->CopyHdrFromExistingHdr(nsMsgKey_None, aHdr, true, getter_AddRefs(newHdr)); if (NS_SUCCEEDED(rv) && !newHdr) rv = NS_ERROR_UNEXPECTED; if (NS_FAILED(rv)) { aDestFolder->ThrowAlertMsg("filterFolderHdrAddFailed", nullptr); return rv; } There's a similar case where we crashed on a developer machine; it just logs a debug warning and crashes: mailnews/local/src/nsMsgMaildirStore.cpp https://dxr.mozilla.org/comm-central/source/mailnews/local/src/nsMsgMaildirStore.cpp#589 Starting with line 589 nsCOMPtr<nsIMsgDatabase> db; aFolder->GetMsgDatabase(getter_AddRefs(db)); if (!db) NS_ERROR("no db");
Component: Backend → Database
Stack: Frame Module Signature [Expand] Source 0 xul.dll nsMsgMaildirStore::MoveNewlyDownloadedMessage nsMsgMaildirStore.cpp:835 1 xul.dll nsParseNewMailState::ApplyFilterHit nsParseMailbox.cpp:2255 2 xul.dll nsMsgFilterList::ApplyFiltersToHdr nsMsgFilterList.cpp:326 3 xul.dll nsParseNewMailState::ApplyFilters nsParseMailbox.cpp:2135 4 xul.dll nsParseNewMailState::PublishMsgHeader nsParseMailbox.cpp:2060 5 xul.dll nsPop3Sink::IncorporateComplete nsPop3Sink.cpp:906 6 xul.dll nsPop3Protocol::HandleLine nsPop3Protocol.cpp:3570 7 xul.dll nsPop3Protocol::RetrResponse nsPop3Protocol.cpp:3355 8 xul.dll nsPop3Protocol::ProcessProtocolState nsPop3Protocol.cpp:3986 9 xul.dll nsMsgProtocol::OnDataAvailable nsMsgProtocol.cpp:298 10 xul.dll nsInputStreamPump::OnStateTransfer nsInputStreamPump.cpp:600 11 xul.dll nsInputStreamPump::OnInputStreamReady nsInputStreamPump.cpp:429 12 xul.dll nsInputStreamReadyEvent::Run nsStreamUtils.cpp:95
Interesting find. So your crash was with 52.7.0?
Flags: needinfo?(ben.bucksch)
Keywords: crash
No, with code based on Thunderbird 52.0.
Flags: needinfo?(ben.bucksch)
So far, we know of only a single user who has this crash. It might be a corrupted maildir, or something like that. If we get more user reports, I'll update.
Severity: critical → normal
Well, bug 1264673 landed in 52.6.0 which fixed such a crash. And the code you cited in comment 0 is 52.6.0, not 52.0
Severity: normal → critical
(In reply to Jorg K (GMT+2) from comment #6) > Hmm, how can it still crash? > https://hg.mozilla.org/comm-central/rev/f9c68d3f6054#l1.12 Ben, am I mistaken about comment 5?
Flags: needinfo?(ben.bucksch)

(In reply to Jorg K (GMT+2) from comment #6)

Hmm, how can it still crash?
https://hg.mozilla.org/comm-central/rev/f9c68d3f6054#l1.12

Jorgk, do you still want to keep this bug ?

Flags: needinfo?(ben.bucksch) → needinfo?(jorgk)

Hmm, the first code snippet from comment #0 can't crash and the second one was fixed here:
https://hg.mozilla.org/comm-central/rev/64f649a0558a

Fixed by bug 1275948.

Status: NEW → RESOLVED
Closed: 5 years ago
Flags: needinfo?(jorgk)
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 63.0
Whiteboard: [fixed by bug 1275948]
You need to log in before you can comment on or make changes to this bug.