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

Christos Tsantilas christos at chtsanti.net
Wed Jan 11 09:55:11 UTC 2017


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SQUID-255-multiple-assertions-during-shutdown-t4.patch
Type: text/x-patch
Size: 5082 bytes
Desc: not available
URL: <http://lists.squid-cache.org/pipermail/squid-dev/attachments/20170111/9d0479b6/attachment.bin>


More information about the squid-dev mailing list