Petar Bogdanovic
petar@smokva.net
Fri Jun 5 22:17:25 UTC 2009
On Fri, Jun 05, 2009 at 09:52:05PM +0000, Vernon Schryver wrote: > > From: MrC <lists-dcc@cappella.us> > > > As expected, this is the result of a kill(2) call. > > > > #0 0xbbaf923f in kill () from /usr/lib/libc.so.12 > > #1 0xbbb95a64 in abort () from /usr/lib/libc.so.12 > > #2 0xbbbdc60c in __res_state () from /usr/lib/libpthread.so.0 > > #3 0x0806b9ca in dcc_res_delays (budget=4) at get_port.c:476 > > #4 0x080660f2 in dcc_clnt_rdy (emsg=0xb91fff50 "", ctxt=0x80c9000, > > clnt_fgs=8 '\b') at clnt_send.c:1740 > > #5 0x080544dc in clnt_resolve_thread (arg=0x0) at clnt_threaded.c:394 > > #6 0xbbbe562d in pthread_join () from /usr/lib/libpthread.so.0 > > #7 0xbbb1aa2c in swapcontext () from /usr/lib/libc.so.12 > > Now that you mention it, I saw an instance of it a week or two ago, > but hoped it was a fluke. I've been unable to reproduce it then or today. > > That's an ugly one, because it's not in my code. > This is the relevant part of my get_port.c: > > if (!dcc_host_locked) > dcc_logbad(EX_SOFTWARE, "dcc_get_host() not locked"); > > /* get the current value */ > if (!(_res.options & RES_INIT)) > res_init(); > > dcc_logbad() calls abort() after syslog(). > Because I assume the resolver is not thread safe and check that it's > locked, it can't be a simple, valid locking problem. > > I guess I'll have to look for NetBSD's version of the resolver library > to see what NetBSD has done to it. There are no abort() calls in the > FreeBSD 7.1 version of res_state.c # find /usr/src/ -name 'res_state*' /usr/src/lib/libc/resolv/res_state.c /usr/src/lib/libpthread/res_state.c # grep -ri abort\( /usr/src/lib/libc/resolv/res_state.c # grep -ri abort\( /usr/src/lib/libpthread/res_state.c abort(); Petar Bogdanovic
More information about the DCC
mailing list