Thomas-Martin Seck wrote:
FYI; the Squid FreeBSD port has already been updated to STABLE11.
----- Forwarded message from Thomas-Martin Seck <tmseck@xxxxxxxxxxxxx> -----
[...]
Yes, the FreeBSD port provides patches to enable ICAP client support,
due to popular demand. ICAP support is not enabled by default, though.
The ICAP client patch does or rather did remove that line. It's a bit
difficult to tell because the ICAP code and the patch look like they are
now developed against Squid-2-HEAD sources which seem to have diverged a
bit from Squid-2.6, especially in client_side.c. The problem I am facing
is that the patch used to touch clientReadRequest() but now touches
clientTryParseRequest() instead (which is only present in Squid-2-HEAD
it seems).
I have updated the ICAP patchset I provide for FreeBSD to not remove the
commSetTimeout() call in client_side.c:clientReadRequest(). The updated
patch will be available in the FreeBSD ports collection alongside with
Squid-2.6.STABLE11. I have just submitted the update request, so it
should be available within the next few days.
----- End forwarded message -----
I'm using the FreeBSD squid port with ICAP support and I have it
configured to pass all HTTP requests through my icap server. It was
working well with the squid 2.6.9 port, but I wanted to take advantage
of the better support for broken HTTP/1.1 servers so I have updated to
the 2.6.11 port. However, squid is frequently dumping core with the
following traceback:
opteron6:/usr/ports/www/squid/work/squid-2.6.STABLE11/src (502) gdb squid ~/squid.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
warning: exec file is newer than core file.
Core was generated by `squid'.
Program terminated with signal 6, Aborted.
Reading symbols from /lib/libcrypt.so.3...done.
Loaded symbols for /lib/libcrypt.so.3
Reading symbols from /lib/libm.so.4...done.
Loaded symbols for /lib/libm.so.4
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0 0x00000008009e72dc in _nsyylhs () from /lib/libc.so.6
(gdb) where
#0 0x00000008009e72dc in _nsyylhs () from /lib/libc.so.6
#1 0x00000008009e616d in _nsyyrindex () from /lib/libc.so.6
#2 0x00007fffffffe4f0 in ?? ()
#3 0xffffffdfffffe510 in ?? ()
#4 0xffffffffffffffff in ?? ()
#5 0x00000000ffffffff in ?? ()
#6 0x0000000000000000 in ?? ()
#7 0x00000000004b2198 in __func__.0 ()
#8 0x0000000000000000 in ?? ()
#9 0x000000000046cf5e in fatal_dump (
message=0x7fffffffe63c "ß", 'ÿ' <repeats 15 times>) at tools.c:450
#10 0x000000000048a5e6 in xstrdup ()
#11 0x0000000000463e93 in new_MemObject (
url=0xcd0080 "http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml", log_url=0x0) at store.c:122
#12 0x0000000000463f9b in new_StoreEntry (mem_obj_flag=1,
url=0xcd0080 "http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml", log_url=0x0) at store.c:136
#13 0x0000000000464fbb in storeCreateEntry (
url=0xcd0080 "http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml", log_url=0x0, flags=
{range = 0, nocache = 0, ims = 0, auth = 0, cachable = 1, hierarchical = 1, loopdetect = 0, proxy_keepalive = 0, proxying = 0, refresh = 0, redirected = 0, need_validation = 0, nocache_hack = 0, accelerated = 0, transparent = 0, inter---Type <return> to continue, or q <return> to quit---
nal = 0, body_sent = 0, reset_tcp = 0, must_keepalive = 0, connection_auth = 0, connection_proxy_auth = 0, no_connection_auth = 0, pinned = 0, auth_sent = 0, collapsed = 0, cache_validation = 0}, method=1) at store.c:1065
#14 0x0000000000418704 in clientCreateStoreEntry (h=0xcd1018, m=1, flags=
{range = 0, nocache = 0, ims = 0, auth = 0, cachable = 1, hierarchical = 1, loopdetect = 0, proxy_keepalive = 0, proxying = 0, refresh = 0, redirected = 0, need_validation = 0, nocache_hack = 0, accelerated = 0, transparent = 0, internal = 0, body_sent = 0, reset_tcp = 0, must_keepalive = 0, connection_auth = 0, connection_proxy_auth = 0, no_connection_auth = 0, pinned = 0, auth_sent = 0, collapsed = 0, cache_validation = 0}) at client_side.c:399
#15 0x000000000041b2b6 in clientProcessMiss (http=0xcd1018)
at client_side.c:3470
#16 0x000000000041fa58 in clientProcessRequest (http=0xcd1018)
at client_side.c:3400
#17 0x000000000044811f in icapReqModReadHttpHdrs (fd=12, data=0x6)
at icap_reqmod.c:203
#18 0x000000000042592f in comm_select (msec=0) at comm_generic.c:264
#19 0x0000000000452428 in main (argc=0, argv=0x0) at main.c:846
(gdb) quit
I see in store_log.c's storeLog() method there is special handling for a
NULL log_url but there isn't similar handling for the NULL log_url in
client_site.c's clientCreateStoreEntry() method before it calls
storeCreateEntry(). I'm new to this code base so I'm not sure whether
it's my ICAP daemon that is causing a problem or if this is truly a
problem in squid.
Any ideas?
Thanks,
Guy Helmer
--
Guy Helmer, Ph.D.
Chief System Architect
Palisade Systems, Inc.