Got thunderbird 1.5rc2 compiled and with all the debug options in there.
[tbird@gopalv ~]$ /opt/thunderbird/bin/thunderbird --debug /usr/bin/gdb /opt/thunderbird//lib/thunderbird-1.5/thunderbird-bin \ -x /tmp/mozargs.AD6303 (gdb) r Starting program: /opt/thunderbird/lib/thunderbird-1.5/thunderbird-bin
Break points in place and broken into
(gdb) break nsImapProtocol::Logout Breakpoint 1 at 0x238c9a9: file mozilla/mailnews/imap/src/nsImapProtocol.cpp, line 5677. (gdb) bt #0 nsImapProtocol::Logout (this=0x9b91f60, shuttingDown=1, waitForResponse=1) at ./mozilla/mailnews/imap/src/nsImapProtocol.cpp:5677 #1 0x0237df2a in nsImapProtocol::TellThreadToDie (this=0x9b91f60, isSafeToClose=0) at ./mozilla/mailnews/imap/src/nsImapProtocol.cpp:1035 #2 0x0237f8ee in nsImapProtocol::ProcessCurrentURL (this=0x9b91f60) at ./mozilla/mailnews/imap/src/nsImapProtocol.cpp:1475 #3 0x0237e4f4 in nsImapProtocol::ImapThreadMainLoop (this=0x9b91f60) at ./mozilla/mailnews/imap/src/nsImapProtocol.cpp:1140 #4 0x0237d985 in nsImapProtocol::Run (this=0x9b91f60) at ./mozilla/mailnews/imap/src/nsImapProtocol.cpp:931 #5 0x007e9ba2 in nsThread::Main (arg=0x9b91f30) at ./mozilla/xpcom/threads/nsThread.cpp:118 #6 0x00288f9e in _pt_root (arg=0x9b9aa90) at ./mozilla/nsprpub/pr/src/pthreads/ptthread.c:220 #7 0x001163ae in start_thread () from /lib/tls/libpthread.so.0 #8 0x00672aee in clone () from /lib/tls/libc.so.6 (gdb)c ###!!! ASSERTION: syntax error in generic parser: 'PR_FALSE', file ./mozilla/mailnews/imap/src/nsIMAPGenericParser.cpp, line 94
Some progress, at least - we know that somewhere the syntax parser is screwing up :)
(gdb) break nsIMAPGenericParser::SetSyntaxError if error!=0 Breakpoint 4 at 0x233407b: file ./mozilla/mailnews/imap/src/nsIMAPGenericParser.cpp, line 90. Breakpoint 4, nsIMAPGenericParser::SetSyntaxError (this=0x9c937ac, error=1) at ./mozilla/mailnews/imap/src/nsIMAPGenericParser.cpp:90 90 fSyntaxError = error; (gdb) bt 4 #0 nsIMAPGenericParser::SetSyntaxError (this=0x9c937ac, error=1) at ./mozilla/mailnews/imap/src/nsIMAPGenericParser.cpp:90 #1 0x023a2243 in nsImapServerResponseParser::SetSyntaxError (this=0x9c937ac, error=1) at ./mozilla/mailnews/imap/src/nsImapServerResponseParser.cpp:2922 #2 0x0239ffcf in nsImapServerResponseParser::msg_obsolete (this=0x9c937ac) at .mozilla/mailnews/imap/src/nsImapServerResponseParser.cpp:2122 #3 0x0239cffb in nsImapServerResponseParser::numeric_mailbox_data ( this=0x9c937ac) at ./mozilla/mailnews/imap/src/nsImapServerResponseParser.cpp:1031 (More stack frames follow...) (gdb) p this->fNextToken $2 = 0x9bdf13f "NO" (gdb) p this->fCurrentLine $6 = 0x9b76f50 "* 1072 NO message error; can't fetch that message\r\n"
Ok, so the IMAP server returns some error message which my t-bird fails to understand ? bienvenu_ asked me to get an IMAP client side log
export NSPR_LOG_MODULES=IMAP:5 export NSPR_LOG_FILE=/tmp/tbird.log
The log file data is a bit interesting, but not really anything to wake anyone up.
112905136[b6562480]: ReadNextLine [stream=b6562750 nb=52 needmore=0] 112905136[b6562480]: b6559af8:us.f318.mail.yahoo.com:S-foss.in: CreateNewLineFromSocket: * 1072 NO message error; can't fetch that message 112905136[b6562480]: b6559af8:us.f318.mail.yahoo.com:S-foss.in:PARSER: Internal Syntax Error: %s: * 1072 NO message error; can't fetch that message 112905136[b6562480]: b6559af8:us.f318.mail.yahoo.com:S-foss.in:SendData:TellThreadToDie: 8 logout 112905136[b6562480]: b6559af8:us.f318.mail.yahoo.com:S-foss.in:TellThreadToDie: close socket connection
Let us move onto the RFC - 2060 (IMAP version 4, revision 1). Scroll down to section 6.4.8. The UID command seems to expect 'NO' as a valid response - but it is not entirely clear whether "* 1072 NO" is valid in the current context. (updated: bienvenu_ told me that's a valid response). Right now, hacking on a quick fix to ignore 'NO' lines in that output.
Index: nsImapServerResponseParser.cpp =================================================================== RCS file: /cvsroot/mozilla/mailnews/imap/src/nsImapServerResponseParser.cpp,v retrieving revision 1.122.8.2 diff -u -r1.122.8.2 nsImapServerResponseParser.cpp --- nsImapServerResponseParser.cpp 22 Sep 2005 23:29:11 -0000 1.122.8.2 +++ nsImapServerResponseParser.cpp 23 Dec 2005 02:29:24 -0000 @@ -1027,6 +1027,11 @@ fFlagState->ExpungeByIndex((PRUint32) tokenNumber); skip_to_CRLF(); } + else if(!PL_strcasecmp(fNextToken, "NO")) + { + /* crude !! */ + skip_to_CRLF(); + } else msg_obsolete(); }
One night's sleep - wasted.
--Users who debug, shouldn't be punished for it