[squid-users] Squid 2.5 and SmartFilter causing frequent crashes

From: Lightfoot.Michael <Lightfoot.Michael@dont-contact.us>
Date: Wed, 19 Mar 2003 11:45:12 +1100

Quite a while ago (over a month) I reported a problem to this list with
squid 2.5STABLE1 and Secure Computing's SmartFilter software.
SmartFilter integrates with squid by patching several source files to
redirect the URL to itself (rather than using the standard redirector
interface,) by adding a couple of lines to squid.conf and by adding a
couple of fields to access.log.

At that stage I was running 2.5STABLE1-20021118, SmartFilter 3.1.1 on
Solaris 7. I am also running Cameron Simpson's Ad Zapper as a standard
redirector (12 instances.)

I have been conversing with Secure Computing's technical support ever
since and after some time they decided that Solaris 7 was "unsupported".
I have since upgraded the server to Solaris 9 with all the latest
patches (uname -a reports "SunOS minotaur.comcare.gov.au 5.9
Generic_112233-04 sun4u sparc SUNW,Ultra-60"), which of course is also
"unsupported" (they are promising support soon and have started
"testing".)

This caused the frequency of crashes to increase dramatically for a few
days while I got around to upgrading squid to 2.5STABLE2-20030318 and
SmartFilter 3.2.0 yesterday. Ad Zapper is regularly upgraded by an
automatic download every few days.

I am now getting crashes about once per hour or so this morning. Mostly
all squid's cache.log tells me is that it had a segment violation, but I
did get the following a short time back:

2003/03/19 10:46:18| comm_accept: FD 26: (130) Software caused
connection abort
2003/03/19 10:46:18| httpAccept: FD 26: accept failure: (130) Software
caused connection abort
2003/03/19 10:46:51| assertion failed: store_client.c:201: "sc->callback
== NULL"
2003/03/19 10:47:01| Starting Squid Cache version 2.5.STABLE2-20030318
for sparc-sun-solaris2.9...

The offending code segment is:

/* copy bytes requested by the client */
void
storeClientCopy(store_client * sc,
    StoreEntry * e,
    off_t seen_offset,
    off_t copy_offset,
    size_t size,
    char *buf,
    STCB * callback,
    void *data)
{
    assert(!EBIT_TEST(e->flags, ENTRY_ABORTED));
    debug(20, 3) ("storeClientCopy: %s, seen %d, want %d, size %d, cb
%p, cbdata %p\n",
        storeKeyText(e->hash.key),
        (int) seen_offset,
        (int) copy_offset,
        (int) size,
        callback,
        data);
    assert(sc != NULL);
#if STORE_CLIENT_LIST_DEBUG
    assert(sc == storeClientListSearch(e->mem_obj, data));
#endif
    assert(sc->callback == NULL);
    assert(sc->entry == e);
    sc->seen_offset = seen_offset;
    sc->callback = callback;
    sc->copy_buf = buf;
    sc->copy_size = size;
    sc->copy_offset = copy_offset;
    storeClientCopy2(e, sc);
}

Does the above mean anything to anybody? How can I get a better
indication of where the segment violation is occurring? And please no
lectures about source code hacks by commercial vendors! :-)

I am also running squid 2.5STABLE1 on another server under Solaris 2.6
without SmartFilter or Ad Zapper. It hasn't missed a beat.

Michael Lightfoot
Unix Consultant
ISG Host Systems
Comcare
+61 2 62750680
Apologies for the rubbish that follows...
------------------------------------------------------------------------
NOTICE: This e-mail message and attachments may contain confidential
information. If you are not the intended recipient you should not use or
disclose any information in the message or attachments. If received in
error, please notify the sender by return email immediately. Comcare
does not waive any confidentiality or privilege.
Received on Tue Mar 18 2003 - 17:45:21 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 17:14:07 MST