Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: firefox dumps core



On Fri, Nov 09, 2012 at 01:02:29PM +0000, Patrick Welche wrote:
> On Fri, Nov 09, 2012 at 02:01:37PM +0100, Martin Husemann wrote:
> > On Fri, Nov 09, 2012 at 12:59:26PM +0000, Patrick Welche wrote:
> > > After a general src & pkgsrc update on amd64 yesterday, firefox now tells
> > > me:
> > > 
> > > _res is not supported for multi-threaded programs.
> > 
> > Can you get a backtrace from the dump?
> 
> I don't have symbols around...
> 
> (gdb) bt
> #0  0x00007f7ff6906f8a in _lwp_kill () from /usr/lib/libc.so.12
> #1  0x00007f7ff3b48249 in ?? () from /usr/pkg/lib/xulrunner/libxul.so
> #2  0x00007f7ff689b0b0 in opendir () from /usr/lib/libc.so.12
> #3  0xfffffffb00000006 in ?? ()
> #4  0x0000000000000000 in ?? ()
> 
> I'll have to rebuild for something more useful...

Got it:

In 
pkgsrc/devel/xulrunner/work.x86_64/mozilla-release/netwerk/dns/nsHostResolver.cpp:386

#if defined(HAVE_RES_NINIT)
    // We want to make sure the system is using the correct resolver settings,
    // so we force it to reload those settings whenever we startup a subsequent
    // nsHostResolver instance.  We assume that there is no reason to do this
    // for the first nsHostResolver instance since that is usually created
    // during application startup.
    static int initCount = 0;
    if (initCount++ > 0) {
        LOG(("calling res_ninit\n"));
        res_ninit(&_res);
    }
#endif  

Essentially, that shouldn't be a global _res but a local res_state statp.

(As can be seen trying to run

#include <resolv.h>

int main()
{
        res_ninit(&_res);

        return 0;
}

compiled with -pthread)


BTW the resolver(3) man page mentions #include <res_update.h> which includes
isc/list.h which apparently no longer exists.


Cheers,

Patrick


Home | Main Index | Thread Index | Old Index