Closed Bug 536805 Opened 15 years ago Closed 8 years ago

crash Eudora import [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] stack overflow in nsEudoraAddress::ResolveEntries

Categories

(MailNews Core :: Import, defect)

1.9.1 Branch
x86
Windows Vista
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: wsmwk, Unassigned)

References

()

Details

(Keywords: crash, Whiteboard: [gs])

Crash Data

crash [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)]

rare before v3.0.0. But even in 3.0, only a handful of crashes

bp-3df338ac-6dcb-4be7-8a57-d52212091109 eudora.exe
0	xpcom_core.dll	nsCaseInsensitiveCStringComparator::operator	 xpcom/string/src/nsStringComparator.cpp:58
1	xpcom_core.dll	nsAString_internal::Equals	xpcom/string/src/nsTSubstring.cpp:631
2	eudora.exe	nsEudoraAddress::ResolveAlias	mailnews/import/eudora/src/nsEudoraAddress.cpp:607
3	eudora.exe	nsEudoraAddress::ResolveEntries	mailnews/import/eudora/src/nsEudoraAddress.cpp:630
4	eudora.exe	nsEudoraAddress::ResolveEntries	mailnews/import/eudora/src/nsEudoraAddress.cpp:637
5	eudora.exe	nsEudoraAddress::ResolveEntries	mailnews/import/eudora/src/nsEudoraAddress.cpp:637
6	eudora.exe	nsEudoraAddress::ResolveEntries	mailnews/import/eudora/src/nsEudoraAddress.cpp:637 
...
18467	eudora.exe	nsEudoraAddress::ResolveEntries	 mailnews/import/eudora/src/nsEudoraAddress.cpp:637
18468	eudora.exe	nsEudoraAddress::ResolveEntries	mailnews/import/eudora/src/nsEudoraAddress.cpp:637
18469	eudora.exe	nsEudoraAddress::BuildABCards	mailnews/import/eudora/src/nsEudoraAddress.cpp:682
18470	eudora.exe	nsEudoraAddress::ImportAddresses	mailnews/import/eudora/src/nsEudoraAddress.cpp:172
18471	eudora.exe	ImportEudoraAddressImpl::ImportAddressBook	mailnews/import/eudora/src/nsEudoraImport.cpp:886
18472	eudora.exe	ImportAddressThread	mailnews/import/src/nsImportAddressBooks.cpp:1039
18473	nspr4.dll	_PR_NativeRunThread	nsprpub/pr/src/threads/combined/pruthr.c:426 

bp-e26694fc-5f5d-4b20-b53f-27e8d2090926 thunderbird.exe
Summary: crash crEudora import [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] → crash Eudora import [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)]
I'm having a similar problem with TB 3, under WinXP, importing Eudora 6.2 files with EudoraRescue.
Add-ons: {972ce4c6-7e08-4474-a285-3208198ce6fd}:3.0.3
BuildID: 20100227143138
CrashTime: 1268559322
Email: 
InstallTime: 1268550484
ProductName: Thunderbird
SecondsSinceLastCrash: 798
StartupTime: 1268558538
Theme: classic/1.0
Throttleable: 1
URL: 
Vendor: 
Version: 3.0.3

This report also contains technical information about the state of the application when it crashed.
(In reply to comment #2)
> Add-ons: {972ce4c6-7e08-4474-a285-3208198ce6fd}:3.0.3

unfortunately the details button of the crash reporter doesn't provide useful information.

if you have a testcase (a file to import that crashes) perhaps beckley would be interested in using it to create a fix?
Summary: crash Eudora import [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] → crash Eudora import [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] stack overflow in nsEudoraAddress::ResolveEntries
Looks like this happens if you have two AB entries in Eudora that each point to each other (A contains B and B contains A).  It causes an infinite recursion trying to resolve the entries.  Thunderbird doesn't support an AB list containing another AB list (which Classic Eudora does support), and so the import code has to flatten out those cases.

The fix is non-trivial because the recursion can happen at many levels, e.g. A contains B, B contains C, C contains A.  The code is probably going to need to be modified to keep a list of which AB lists have already been traversed.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
This is NOT a duplicate of bug 484551.  Lee just attached his crash report (for this address book importing bug) to the mailbox import bug in 484551.  Sorry for the bugspam.
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Status: REOPENED → NEW
Crash Signature: [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)]
nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int, unsigned int) More Reports Search
bp-551be678-8150-48ab-a953-1736a2121124

nsACString_internal::Equals(nsACString_internal const&, nsCStringComparator const&) More Reports Search
bp-27a25d4e-fc5e-42c5-9782-c00b82121122
Crash Signature: [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] → [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] [@ nsCaseInsensitiveCStringComparator::operator] [@ nsACString_internal::Equals(nsACString_internal const&, nsCStringComparator const&)]
Crash Signature: [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] [@ nsCaseInsensitiveCStringComparator::operator] [@ nsACString_internal::Equals(nsACString_internal const&, nsCStringComparator const&)] → [@ nsCaseInsensitiveCStringComparator::operator()(char const*, char const*, unsigned int)] [@ nsCaseInsensitiveCStringComparator::operator] [@ nsACString_internal::Equals(nsACString_internal const&, nsCStringComparator const&)] [@ nsCaseInsensitiveCStr…
Importing from Eudora was removed from Thunderbird in bug 1243498.
Please see http://kb.mozillazine.org/Importing_from_Eudora_-_Thunderbird on how you can still import from Eudora if you need that.
Status: NEW → RESOLVED
Closed: 14 years ago8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.