Hello Daniel,

On Mon, Apr 22, 2013 at 04:09:51PM -0400, Daniel Kahn Gillmor wrote:
> On 04/22/2013 02:11 PM, Guido Günther wrote:
> > Could you check if enigmal (or any other not icedove related extension)
> > shows up?
> 
> I thought maybe i should look for shared objects, since that's part of
> the current enigmail implementation, but these are the only references
> to '\.so' files in the backtrace:
> 
>    from /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
>    from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5
>    from /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5
> #90 0x00007ffff459cd6f in SharedStub () from /usr/lib/icedove/libxul.so
>         exePath = "/usr/lib/icedove/\000ibxpcom.so", '\000' <repeats 68
> times>, ...
> 
> i would have thought that
> /usr/lib/xul-ext/enigmail/platform/Linux_x86_64-gcc3/lib/libsubprocess-x86_64-gcc3.so
> or
> /usr/lib/xul-ext/enigmail/platform/Linux_x86_64-gcc3/components/libenigmime-x86_64-gcc3.so
> would have shown up here if enigmail was involved.
> 
> there is no "enig" in the backtrace at all.  however, looking at the
> code from the relevant backtrace, it really does look like it's stuff
> that happens after a child process terminates, so maybe enigmail isn't
> in the loop by that point.
> 
> Anything else i should look for?

it's some time gone after this mail from you. The current Icedove
version 24.3.0-2 has a fixed LDFLAGS variable. We had include
'-Wl,--as-needed' which broke libraries dependencies while linking. So
maybe theese crashes are also possibly gone.

On the other hand the code line and function that shown in the gdb logs
are from the nspr thing and normaly should't depend on the fixed linker
option I think.

mozilla/nsprpub/pr/src/md/unix/uxproces.c

507 static void
508 ProcessReapedChildInternal(pid_t pid, int status)
509 {
510     pr_PidRecord *pRec;
511 
512     pRec = FindPidTable(pid);
513     if (NULL == pRec) {
514         pRec = PR_NEW(pr_PidRecord);
515         pRec->pid = pid;
516         pRec->state = _PR_PID_REAPED;
517         pRec->exitStatus = ExtractExitStatus(status);
518         pRec->reapedCV = NULL;
519         InsertPidTable(pRec);
520     } else {
521         PR_ASSERT(pRec->state != _PR_PID_REAPED);    <---- 
522         if (_PR_PID_DETACHED == pRec->state) {
523             PR_ASSERT(NULL == pRec->reapedCV);
524             DeletePidTable(pRec);
525             PR_DELETE(pRec);
526         } else {
527             PR_ASSERT(_PR_PID_WAITING == pRec->state);
528             PR_ASSERT(NULL != pRec->reapedCV);
529             pRec->exitStatus = ExtractExitStatus(status);
530             pRec->state = _PR_PID_REAPED;
531             PR_NotifyCondVar(pRec->reapedCV);
532         }
533     }
534 }

As far as I can see the PR_ASSERT comes from
mozilla/nsprpub/pr/include/prlog.h, but this header is for debugging
stuff.

206 #define PR_ASSERT(_expr) \
207     ((_expr)?((void)0):PR_Assert(# _expr,__FILE__,__LINE__))

Regards
Carsten


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to