Hello,

You still do
  if(!m_pop3ConData->msg_info[m_listpos-1].msgnum)
in your fix.

Yes, you are right. My fix does not work. Anyway, the problem comes from
m_listpos being incremented at each line of the answer to the UIDL command.

BTW, can you still reproduce the jsgc memory stack?

I did not manage to reproduce it today (I tried a few times), but it does not necessarily means that it is corrected: the crash occurred at several points.

Ah ... and attach a bt full from the first bt you submitted.

Here is a full backtrace from Icedove 1.5.0.9.dfsg1-1:

#0  0xb7521cc0 in free () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#1  0xb752387f in malloc () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0xb7db9495 in PL_strdup (s=0x8975798 "112695870š^·4491") at strdup.c:53
        n = 17
#3 0xb521e0b1 in put_hash (table=0x89757b0, key=0x8a58ef0 "1126958738.14354", value=<value optimized out>, dateReceived=1166983101)
    at nsPop3Protocol.cpp:166
No locals.
#4 0xb5222d6f in nsPop3Protocol::GetMsg (this=0x892e410) at nsPop3Protocol.cpp:2746
        rv = <value optimized out>
        mailboxSpaceLeft = <value optimized out>
folder = {<nsCOMPtr_base> = {mRawPtr = 0x89f515d}, <No data fields>}
        path = {<nsCOMPtr_base> = {mRawPtr = 0x897842c}, <No data fields>}
        c = <value optimized out>
        i = 1884
        prefBool = 0
        popstateTimestamp = 1166983101
#5 0xb522626e in nsPop3Protocol::ProcessProtocolState (this=0x892e410, url=0x897842c, aInputStream=0x8a5e1c0, sourceOffset=65133, aLength=2356)
    at nsPop3Protocol.cpp:3786
        prefBool = -1222916272
        status = 0
mailnewsurl = {<nsCOMPtr_base> = {mRawPtr = 0x897842c}, <No data fields>} #6 0xb519670e in nsMsgProtocol::OnDataAvailable (this=0x892e410, request=0x89f85d8, ctxt=0x897842c, inStr=0x8a5e1c0, sourceOffset=65133,
    count=2356) at nsMsgProtocol.cpp:350
        uri = {<nsCOMPtr_base> = {mRawPtr = 0x897842c}, <No data fields>}
#7 0xb71481d1 in nsInputStreamPump::OnStateTransfer (this=0x89f85d8) at nsInputStreamPump.cpp:437
        offsetBefore = <value optimized out>
seekable = {<nsCOMPtr_base> = {mRawPtr = 0x8a5e1c4}, <No data fields>}
        rv = <value optimized out>
        avail = 2356
#8 0xb714832f in nsInputStreamPump::OnInputStreamReady (this=0x89f85d8, stream=0x8a5e1c0) at nsInputStreamPump.cpp:340
        nextState = 926430520
#9 0xb7e177cc in nsInputStreamReadyEvent::EventHandler (plevent=0x87e7efc) at nsStreamUtils.cpp:119
        ev = <value optimized out>
#10 0xb7e2c0d7 in PL_HandleEvent (self=0x87e7efc) at plevent.c:688
        result = <value optimized out>
#11 0xb7e2c3e9 in PL_ProcessPendingEvents (self=0x89d83e0) at plevent.c:623
        event = (PLEvent *) 0x31393434
        count = 2
#12 0xb7e2e26e in nsEventQueueImpl::ProcessPendingEvents (this=0x8967768) at nsEventQueue.cpp:417
        correctThread = <value optimized out>
#13 0xb67aaf75 in event_processor_callback (source=0x842a008, condition=G_IO_IN, data=0x37383538) at nsAppShell.cpp:67
No locals.
#14 0xb7756c7f in g_io_channel_unix_get_fd () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#15 0xb772d731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#16 0xb77307a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#17 0xb7730d27 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#18 0xb67ab416 in nsAppShell::DispatchNativeEvent (this=0x8a0bcc8, aRealEvent=0, aEvent=0x0) at nsAppShell.cpp:274
No locals.
#19 0xb60e538c in nsXULWindow::ShowModal (this=0xb7d67000) at nsXULWindow.cpp:404
        data = (void *) 0x0
        isRealEvent = 0
        processEvent = 1
        cx = (JSContext *) 0xbf81916c
appShell = {<nsCOMPtr_base> = {mRawPtr = 0x8a0bcc8}, <No data fields>} window = {<nsCOMPtr_base> = {mRawPtr = 0x89904d0}, <No data fields>} tempRef = {<nsCOMPtr_base> = {mRawPtr = 0x8936858}, <No data fields>} appShellService = {<nsCOMPtr_base> = {mRawPtr = 0x81e6c38}, <No data fields>}
        stack = {<nsCOMPtr_base> = {mRawPtr = 0x8107ed8}, <No data fields>}
        rv = 134698472
#20 0xb60e0f87 in nsContentTreeOwner::ShowAsModal (this=0x864ba18) at nsContentTreeOwner.cpp:430
No locals.
#21 0xb66dc228 in nsWindowWatcher::OpenWindowJS (this=0x813c478, aParent=0x831cd88, aUrl=0xb66f8ea0 "chrome://global/content/commonDialog.xul", aName=0xb66f89c0 "_blank", aFeatures=0xb66f8d54 "centerscreen,chrome,modal,titlebar", aDialog=1, argc=1, argv=0x8994848, _retval=0xbf819260)
    at nsWindowWatcher.cpp:824
newTreeOwner = {<nsCOMPtr_base> = {mRawPtr = 0x8960678}, <No data fields>} newChrome = {<nsCOMPtr_base> = {mRawPtr = 0x864ba24}, <No data fields>}
        rv = <value optimized out>
        nameSpecified = 1
        featuresSpecified = 1
        windowIsNew = 1
        windowIsModal = 1
        uriToLoadIsChrome = 1
        chromeFlags = 4160750598
name = {<nsFixedString> = {<nsString> = {<nsSubstring> = {<nsAString_internal> = {mVTable = 0xb7e61ce8, mData = 0xbf81903c, mLength = 6, mFlags = 65553}, <No data fields>}, <No data fields>}, mFixedCapacity = 63, mFixedBuf = 0xbf81903c}, mStorage = {95, 98, 108, 97, 110, 107, 0, 49025, 17284, 47070, 37184, 49025, 7808, 2057, 36416, 46703, 21836, 47067, 9688, 47078, 42232, 46942, 18472, 2201, 107, 0, 3672, 2207, 72, 0, 12, 0, 37000, 49025, 62977, 46672, 52616, 2097, 37032, 49025, 21836, 47067, 36852, 46942, 42176, 46942, 12, 0, 37048, 49025, 14463, 46930, 42176, 46942, 8211, 0, 8608, 47088, 0, 0, 12, 0, 37096, 49025}} features = {<nsFixedCString> = {<nsCString> = {<nsCSubstring> = {<nsACString_internal> = {mVTable = 0xb7e61de8, mData = 0xbf8190d4 "centerscreen,chrome,modal,titlebar", mLength = 34, mFlags = 65553}, <No data fields>}, <No data fields>}, mFixedCapacity = 63, mFixedBuf = 0xbf8190d4 "centerscreen,chrome,modal,titlebar"}, mStorage = "centerscreen,chrome,modal,titlebar\000\000(\221\201¿Ø%æ·0\207o¶\000\000\000\000(\221\201¿ !ð·\210Î1\b"} uriToLoad = {<nsCOMPtr_base> = {mRawPtr = 0x8986500}, <No data fields>} parentTreeOwner = {<nsCOMPtr_base> = {mRawPtr = 0x830c120}, <No data fields>} newDocShellItem = {<nsCOMPtr_base> = {mRawPtr = 0x8a30c88}, <No data fields>} queueGuard = {mService = {<nsCOMPtr_base> = {mRawPtr = 0x80c0fd0}, <No data fields>}, mQueue = {<nsCOMPtr_base> = { mRawPtr = 0x8967768}, <No data fields>}, mAppShell = {<nsCOMPtr_base> = {mRawPtr = 0x89ad198}, <No data fields>}} callerContextGuard = {mService = {<nsCOMPtr_base> = {mRawPtr = 0x0}, <No data fields>}, mContext = 0x0} chromeParent = {<nsCOMPtr_base> = {mRawPtr = 0x831ce78}, <No data fields>}
        isCallerChrome = 1
        sm = {<nsCOMPtr_base> = {mRawPtr = 0x81419a0}, <No data fields>}
        cx = <value optimized out>
newDocShell = {<nsCOMPtr_base> = {mRawPtr = 0x8a30c84}, <No data fields>} parentSGO = {<nsCOMPtr_base> = {mRawPtr = 0x831cdb0}, <No data fields>} #22 0xb66db44c in nsWindowWatcher::OpenWindow (this=0x813c478, aParent=0x831cd88, aUrl=0xb66f8ea0 "chrome://global/content/commonDialog.xul", aName=0xb66f89c0 "_blank", aFeatures=0xb66f8d54 "centerscreen,chrome,modal,titlebar", aArguments=0x828dfd8, _retval=0xbf819260)
    at nsWindowWatcher.cpp:476
        argc = 1
        argv = (jsval *) 0x8994848
        cx = (JSContext *) 0x831ce88
        mark = (void *) 0x831ceb0
kungFuDeathGrip = {<nsCOMPtr_base> = {mRawPtr = 0x818c910}, <No data fields>}
        rv = 0
#23 0xb66dde20 in nsPromptService::DoDialog (this=0x8410fd0, aParent=0x831cd88, aParamBlock=0x828dfd8, aChromeURL=0xb66f8ea0 "chrome://global/content/commonDialog.xul") at nsPromptService.cpp:659
        rv = <value optimized out>
activeParent = {<nsCOMPtr_base> = {mRawPtr = 0x0}, <No data fields>} arguments = {<nsCOMPtr_base> = {mRawPtr = 0x828dfd8}, <No data fields>} dialog = {<nsCOMPtr_base> = {mRawPtr = 0x88c4718}, <No data fields>} #24 0xb66de853 in nsPromptService::Alert (this=0x8410fd0, parent=0x831cd88, dialogTitle=0x89f0e58, text=0x87efa08) at nsPromptService.cpp:132
        rv = <value optimized out>
stringOwner = {<nsString> = {<nsSubstring> = {<nsAString_internal> = {mVTable = 0xb7e61ce8, mData = 0x89f0e58, mLength = 6, mFlags = 9}, <No data fields>}, <No data fields>}, <No data fields>}
        block = {mBlock = 0x828dfd8}
url = {<nsSubstring> = {<nsAString_internal> = {mVTable = 0xb7e61ce8, mData = 0xb7e5ba46, mLength = 0,
      mFlags = 1}, <No data fields>}, <No data fields>}
styleClass = {<nsAutoString> = {<nsFixedString> = {<nsString> = {<nsSubstring> = {<nsAString_internal> = {mVTable = 0xb7e61ce8, mData = 0xbf8192c0, mLength = 10, mFlags = 65553}, <No data fields>}, <No data fields>}, mFixedCapacity = 63, mFixedBuf = 0xbf8192c0}, mStorage = {97, 108, 101, 114, 116, 45, 105, 99, 111, 110, 0, 47078, 37608, 49025, 583, 47077, 3665, 46930, 36912, 46866, 37816, 49025, 20821, 46864, 54664, 2096, 37676, 49025, 38232, 49025, 1, 0, 38240, 49025, 17, 0, 37912, 49025, 37930, 49025, 62708, 46941, 7400, 47078, 37676, 49025, 3, 0, 17, 1, 7400, 47078, 34376, 46703, 6, 0, 1, 0, 52668, 2097, 57312, 2088, 1,
      0}}, <No data fields>}
#25 0xb66d76cd in nsPrompt::Alert (this=0x8324e50, dialogTitle=0x0, text=0x87efa08) at nsPrompt.cpp:217
        autoDOMEventDispatcher = {mWindow = 0x831cd88, mDefaultEnabled = 1}
#26 0xb5197450 in nsMsgProtocol::OnStopRequest (this=0x8a8afd0, request=0x88bb928, ctxt=0x8976394, aStatus=2152398861) at nsMsgProtocol.cpp:441
        errorMsg = (PRUnichar *) 0x87efa08
msgPrompt = {<nsCOMPtr_base> = {mRawPtr = 0x8324e50}, <No data fields>}
        errorID = 103
        rv = 0
msgUrl = {<nsCOMPtr_base> = {mRawPtr = 0x8976394}, <No data fields>} #27 0xb522166a in nsPop3Protocol::OnStopRequest (this=0x8a8afd0, request=0x88bb928, aContext=0x8976394, aStatus=2152398861)
    at nsPop3Protocol.cpp:767
        rv = 3212940744
#28 0xb71479a6 in nsInputStreamPump::OnStateStop (this=0x88bb928) at nsInputStreamPump.cpp:506
No locals.
#29 0xb7148368 in nsInputStreamPump::OnInputStreamReady (this=0x88bb928, stream=0x89616c8) at nsInputStreamPump.cpp:343
        nextState = 825832500
#30 0xb7e177cc in nsInputStreamReadyEvent::EventHandler (plevent=0x86c4c8c) at nsStreamUtils.cpp:119
        ev = <value optimized out>
#31 0xb7e2c0d7 in PL_HandleEvent (self=0x86c4c8c) at plevent.c:688
        result = <value optimized out>
#32 0xb7e2c3e9 in PL_ProcessPendingEvents (self=0x80e7c50) at plevent.c:623
        event = (PLEvent *) 0x31393434
        count = 5
#33 0xb7e2e26e in nsEventQueueImpl::ProcessPendingEvents (this=0x80c0d28) at nsEventQueue.cpp:417
        correctThread = <value optimized out>
#34 0xb67aaf75 in event_processor_callback (source=0x8233b00, condition=G_IO_IN, data=0x37383538) at nsAppShell.cpp:67
No locals.
#35 0xb7756c7f in g_io_channel_unix_get_fd () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#36 0xb772d731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#37 0xb77307a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#38 0xb7730b67 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#39 0xb7b9a281 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#40 0xb67ab3c2 in nsAppShell::Run (this=0x813ba88) at nsAppShell.cpp:139
No locals.
#41 0xb676ad80 in nsAppStartup::Run (this=0x813ba48) at nsAppStartup.cpp:150
        rv = <value optimized out>
#42 0x0804e69a in XRE_main (argc=1, argv=0xbf819cb4, aAppData=0x8059020) at nsAppRunner.cpp:2380 remoteService = {<nsCOMPtr_base> = {mRawPtr = 0x8330358}, <No data fields>}
        rv = 0
        i = <value optimized out>
dirProvider = {<nsIDirectoryServiceProvider2> = {<nsIDirectoryServiceProvider> = {<nsISupports> = { _vptr.nsISupports = 0x8059228}, <No data fields>}, <No data fields>}, <nsIProfileStartup> = {<nsISupports> = { _vptr.nsISupports = 0x805924c}, <No data fields>}, mAppDir = {<nsCOMPtr_base> = {mRawPtr = 0x805c498}, <No data fields>}, mXULAppDir = {<nsCOMPtr_base> = {mRawPtr = 0x0}, <No data fields>}, mProfileDir = {<nsCOMPtr_base> = {mRawPtr = 0x807b810}, <No data fields>}, mProfileLocalDir = {<nsCOMPtr_base> = {mRawPtr = 0x807b888}, <No data fields>}, mProfileNotified = 1}
        glib2 = (PRLibrary *) 0x805c0c8
nativeApp = {<nsCOMPtr_base> = {mRawPtr = 0x8076330}, <No data fields>}
        canRun = 1
registryFile = {<nsCOMPtr_base> = {mRawPtr = 0x8077000}, <No data fields>}
        xremotearg = <value optimized out>
        ar = <value optimized out>
profileLock = {<nsCOMPtr_base> = {mRawPtr = 0x807bcf8}, <No data fields>}
        startOffline = 0
        profD = {<nsCOMPtr_base> = {mRawPtr = 0x807b810}, <No data fields>}
profLD = {<nsCOMPtr_base> = {mRawPtr = 0x807b888}, <No data fields>}
        upgraded = 0
version = {<nsFixedCString> = {<nsCString> = {<nsCSubstring> = {<nsACString_internal> = {mVTable = 0xb7e61de8, mData = 0xbf819990 "1.5.0.9_2006122001/1.8.0.9_2006122001", mLength = 37, mFlags = 65553}, <No data fields>}, <No data fields>}, mFixedCapacity = 63, mFixedBuf = 0xbf819990 "1.5.0.9_2006122001/1.8.0.9_2006122001"}, mStorage = "1.5.0.9_2006122001/1.8.0.9_2006122001\000b·\000\000\000\000\000\000\000\000\001\000\000\000</?·\002\000\000\000ôÏñ·"} osABI = {<nsCString> = {<nsCSubstring> = {<nsACString_internal> = {mVTable = 0xb7e61de8, mData = 0x80577f3 "Linux_x86-gcc3", mLength = 14, mFlags = 1}, <No data fields>}, <No data fields>}, <No data fields>}
        versionOK = <value optimized out>
        needsRestart = 0
        appInitiatedRestart = <value optimized out>
#43 0x0804abdf in main (argc=Cannot access memory at address 0x37383520
) at nsMailApp.cpp:62
No locals.
#44 0xb74d0ea8 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#45 0x0804ab11 in _start () at ../sysdeps/i386/elf/start.S:119
No locals.

Hope this helps.
Merry Christmas,
Nicolas

Reply via email to