On Wed, 2003-03-19 at 11:45, Lightfoot.Michael wrote:
> 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?  

No segment violation is occuring. A logic violation is occuring and
triggering an assert. asserts are used to detect programmer error -
where the programmer has either misued an internal API, or hasn't
covered some corner case and that resulted in inconsistent internal
state.

> And please no
> lectures about source code hacks by commercial vendors!  :-)

I won't lecture you, but I also can't support you as I don't know what
the code you are running looks like. Nor do I want to know.

> 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.

Right. That should give you a clue :}.

Rob
-- 
GPG key available at: <http://users.bigpond.net.au/robertc/keys.txt>.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to