[squid-users] invalid hash entry in internal DNS code causes assertion failure (2.6STABLE1/Solaris 10/SPARC)

From: Bertold Kolics <[email protected]>
Date: Thu, 20 Jul 2006 14:56:01 -0500

Hi,

Excuse me if this is a known issue.

I have compiled Squid 2.6STABLE1 using Sun Studio 8 with the
--enable-poll, --enable-cache-digests flags on Solaris 10/SPARC. The
cache is configured to use the internal DNS feature and communicates
with several parent caches.

Squid stopped after an assertion failure in the internal DNS code.
Below is the stack trace.

Your help would be appreciated.

Bertold

Reading squid
core file header read successfully
Reading ld.so.1
Reading libcrypt_i.so.1
Reading libm.so.2
Reading libsocket.so.1
Reading libnsl.so.1
Reading libc.so.1
Reading libgen.so.1
Reading libc_psr.so.1
Reading nss_files.so.1
Reading nss_nis.so.1
program terminated by signal ABRT (Abort)
0xff13d5ec: _lwp_kill+0x0008: bcc,a,pt %icc,_lwp_kill+0x18 ! 0xff13d5fc
Current function is hash_lookup
  194 assert(walker != walker->next);
(dbx) where
  [1] _lwp_kill(0x0, 0x6, 0x0, 0x6, 0xffff0000, 0x0), at 0xff13d5ec
  [2] raise(0x6, 0x0, 0xff121af4, 0x42770, 0xff164278, 0x6), at 0xff0dd884
  [3] abort(0xffbf6770, 0x1, 0xff16527c, 0xa6544, 0xff167298, 0x0), at
0xff0bde38
  [4] __assert(0x154da4, 0x154dbc, 0xc2, 0x77656263, 0xa6260,
0x16554c), at 0xff0be074
=>[5] hash_lookup(hid = 0x28a550, k = 0x80e330), line 194 in "hash.c"
  [6] idnsCachedLookup(key = 0x80e330 "somehost.example.com", callback
= 0xc4fb8 = &`squid`ipcache.c`ipcacheHandleReply(void *data, struct
_rfc1035_rr *answers, int na, const char *error_message), data =
0x80e3a0), line 895 in "dns_internal.c"
  [7] idnsALookup(name = 0x80e330 "somehost.example.com", callback =
0xc4fb8 = &`squid`ipcache.c`ipcacheHandleReply(void *data, struct
_rfc1035_rr *answers, int na, const char *error_message), data =
0x80e3a0), line 920 in "dns_internal.c"
  [8] ipcache_nbgethostbyname(name = 0x281228 "somehost.example.com",
handler = 0x7f5f8 = &`squid`comm.c`commConnectDnsHandle(const struct
_ipcache_addrs *ia, void *data), handlerData = 0x3c46888), line 453 in
"ipcache.c"
  [9] commConnectStart(fd = 22, host = 0x281228
"webcache1.west.sun.com", port = 8080U, callback = 0x93818 =
&`squid`forward.c`fwdConnectDone(int server_fd, int status, void
*data), data = 0x873cb98), line 277 in "comm.c"
  [10] fwdConnectStart(data = 0x873cb98), line 625 in "forward.c"
  [11] fwdStartComplete(servers = 0x936118, data = 0x873cb98), line
635 in "forward.c"
  [12] peerSelectCallback(psstate = 0x6344e38), line 202 in "peer_select.c"
  [13] peerSelectFoo(ps = 0x6344e38), line 310 in "peer_select.c"
  [14] peerCheckNeverDirectDone(answer = 1, data = 0x6344e38), line
167 in "peer_select.c"
  [15] aclCheckCallback(checklist = 0x932910, answer =
ACCESS_ALLOWED), line 2267 in "acl.c"
  [16] aclCheck(checklist = 0x932910), line 2224 in "acl.c"
  [17] aclNBCheck(checklist = 0x932910, callback = 0xdbf20 =
&`squid`peer_select.c`peerCheckNeverDirectDone(int answer, void
*data), callback_data = 0x6344e38), line 2402 in "acl.c"
  [18] peerSelectFoo(ps = 0x6344e38), line 265 in "peer_select.c"
  [19] peerCheckAlwaysDirectDone(answer = 0, data = 0x6344e38), line
177 in "peer_select.c"
  [20] aclCheckCallback(checklist = 0x933cb0, answer = ACCESS_DENIED),
line 2267 in "acl.c"
  [21] aclCheck(checklist = 0x933cb0), line 2236 in "acl.c"
  [22] aclNBCheck(checklist = 0x933cb0, callback = 0xdbfd0 =
&`squid`peer_select.c`peerCheckAlwaysDirectDone(int answer, void
*data), callback_data = 0x6344e38), line 2402 in "acl.c"
  [23] peerSelectFoo(ps = 0x6344e38), line 254 in "peer_select.c"
  [24] peerSelect(request = 0x3a50328, entry = 0xa4b3470, callback =
0x94aa0 = &`squid`forward.c`fwdStartComplete(struct _FwdServer
*servers, void *data), callback_data = 0x873cb98), line 157 in
"peer_select.c"
  [25] fwdStart(fd = 19, e = 0xa4b3470, r = 0x3a50328), line 881 in "forward.c"
  [26] clientProcessMiss(http = 0x951828), line 3517 in "client_side.c"
  [27] clientProcessRequest(http = 0x951828), line 3440 in "client_side.c"
  [28] clientCheckNoCacheDone(answer = 0, data = 0x951828), line 669
in "client_side.c"
  [29] aclCheckCallback(checklist = 0x933dc8, answer = ACCESS_DENIED),
line 2267 in "acl.c"
  [30] aclCheck(checklist = 0x933dc8), line 2224 in "acl.c"
  [31] aclNBCheck(checklist = 0x933dc8, callback = 0x6d7f8 =
&`squid`client_side.c`clientCheckNoCacheDone(int answer, void *data),
callback_data = 0x951828), line 2402 in "acl.c"
  [32] clientCheckNoCache(http = 0x951828), line 657 in "client_side.c"
  [33] clientAccessCheck2(data = 0x951828), line 368 in "client_side.c"
  [34] clientRedirectDone(data = 0x951828, result = (nil)), line 649
in "client_side.c"
  [35] clientRedirectStart(http = 0x951828), line 551 in "client_side.c"
  [36] clientAccessCheckDone(answer = 1, data = 0x951828), line 425 in
"client_side.c"
  [37] aclCheckCallback(checklist = 0x932590, answer =
ACCESS_ALLOWED), line 2267 in "acl.c"
  [38] aclCheck(checklist = 0x932590), line 2224 in "acl.c"
  [39] aclNBCheck(checklist = 0x932590, callback = 0x6c4e0 =
&`squid`client_side.c`clientAccessCheckDone(int answer, void *data),
callback_data = 0x951828), line 2402 in "acl.c"
  [40] clientAccessCheck(data = 0x951828), line 357 in "client_side.c"
  [41] clientCheckFollowXForwardedFor(data = 0x951828), line 349 in
"client_side.c"
  [42] clientReadRequest(fd = 19, data = 0x2888800), line 4059 in
"client_side.c"
  [43] comm_select(msec = 501), line 471 in "comm_poll.c"
  [44] main(argc = 2, argv = 0xffbffcdc), line 840 in "main.c"
(dbx) print walker
walker = 0x83a080
(dbx) print walker->next
walker->next = 0x83a080
(dbx) up
Current function is idnsCachedLookup
  895 idns_query *old = hash_lookup(idns_lookup_hash, key);
(dbx) print *idns_lookup_hash
*idns_lookup_hash = {
    buckets = 0x284318
    cmp = 0x16562c
    hash = 0x11b148 = &hash_string(const void *data, unsigned size)
    size = 103U
    current_slot = 0
    next = (nil)
    count = 174
}
Received on Thu Jul 20 2006 - 13:56:02 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Aug 01 2006 - 12:00:02 MDT