[squid-dev] [PATCH] Reduce crashes due to unexpected ClientHttpRequest termination.

Amos Jeffries squid3 at treenet.co.nz
Wed Jan 11 14:50:04 UTC 2017


On 11/01/2017 10:55 p.m., Christos Tsantilas wrote:
> We observed such problems on squid shutdown procedure and during regular
> squid operation. Any clientStreams redesign should take care of such
> problems.
> 
> The underlying problem has been known since r13480: If a
> ClientHttpRequest job ends without Http::Stream (and ConnStateData)
> knowledge, then Squid is likely to segfault or assert.
> 
> This patch does not resolve the underlying issue (a proper fix would
> require architectural changes in a consensus-lacking area) but makes an
> unexpected ClientHttpRequest job destruction less likely.
> 
> BodyPipe and Adaptation-related exceptions are the major causes of
> unexpected ClientHttpRequest job destruction. This patch handles them by
> closing the client connection. Connection closure should trigger an
> orderly top-down cleanup, including Http::Stream, ConnStateData, and
> ClientHttpRequest destruction.
> 
> If there is no connection to close, then the exception is essentially
> ignored with a level-1 error message disclosing the problem. The side
> effects of ignoring such exceptions are unknown, but without a client
> connection, it is our hope that they would be relatively benign.
> 
> This is a Measurement Factory project
> 

+1. Looks like a reasonable temporary fix. Thank you.

Amos



More information about the squid-dev mailing list