From e3b6f153e7759c99ed3fd9c43d11f4e4155d3b8b Mon Sep 17 00:00:00 2001 From: Alex Rousskov Date: Wed, 25 Jun 2014 17:21:28 -0600 Subject: [PATCH] Documented a known bug that took a while to triage. No good fix is available. --- src/client_side.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/client_side.h b/src/client_side.h index a86c66c0e0..f48c73c432 100644 --- a/src/client_side.h +++ b/src/client_side.h @@ -78,6 +78,12 @@ class PortCfg; * * The individual processing actions are done by other Jobs which we * kick off as needed. + * + * XXX: If an async call ends the ClientHttpRequest job, ClientSocketContext + * (and ConnStateData) may not know about it, leading to segfaults and + * assertions like areAllContextsForThisConnection(). This is difficult to fix + * because ClientHttpRequest lacks a good way to communicate its ongoing + * destruction back to the ClientSocketContext which pretends to "own" *http. */ class ClientSocketContext : public RefCountable { @@ -91,7 +97,7 @@ public: void keepaliveNextRequest(); Comm::ConnectionPointer clientConnection; /// details about the client connection socket. - ClientHttpRequest *http; /* we own this */ + ClientHttpRequest *http; /* we pretend to own that job */ HttpReply *reply; char reqbuf[HTTP_REQBUF_SZ]; Pointer next; -- 2.39.5