TS hangs after repeated requests from the same kept-alive connection
--------------------------------------------------------------------

                 Key: TS-1094
                 URL: https://issues.apache.org/jira/browse/TS-1094
             Project: Traffic Server
          Issue Type: Bug
          Components: Core
    Affects Versions: 3.1.0
         Environment: Oracle Enterprise Linux 5.5 64-bit
            Reporter: Wilson Ho
            Priority: Blocker


When a client submits multiple requests while re-using the same keep-alived 
connection, TS hangs.  Usually, the client eventually times out, and at that 
point TS will be "waken" up and forwards the request to the original server.  
But by then it's too late and the client already closed connection.

In real life traffic, this bug is very hard to reproduce.  But here is an 
artificial test case.

First, make sure client-side keep alive is on.  My test case uses HTTP (port 
80) GET.

Second, make sure the total header size of the requests is exactly 275 bytes, 
including the carriage returns and line feeds.  One byte more or less would 
fail to reproduce the bug.

Third, repeatedly submit the same request through this keep-alived connection.  
At exactly the 283rd iteration, TS hangs.  Note that if the client opens a new 
connection every time, TS works fine.

There is a second test case, where the header size is exactly 283 bytes, and TS 
hangs at exactly the 275th iteration.  (Does 275 x 283 mean something?)

These magic numbers seem to suggest a memory buffer size (or allocation) 
problem.  I speculate that headers from repeated requests are placed in a 
buffer (or a circular buffer?), and when the total hits a particular size, some 
boundary conditions must have be violated and resulted in memory corruption.

In real life traffic, each request typically has slightly different header 
size, so it is really hard to hit this bug.  I suspect there is a +/- 1 
calculation error in some buffer.

BTW, turning on/off caching does not make any difference.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to