GitHub user shinrich opened a pull request:

    https://github.com/apache/trafficserver/pull/1052

    TS-4813: Fix lingering stream.

    I think the crash is being caused by a stream in state 
HTTP2_STREAM_STATE_CLOSED not being cleaned up.  The timeout triggers later and 
takes a bad path through the HttpTunnel code.
    
    The commit for TS-3535 (HTTP/2 priority support) adds a check at the 
beginning of Http2ConnectionState::send_data_frames to return immediately if 
_state is CLOSED or HALF_CLOSED local.  I removed that check and the frequent 
crashes stopped.  I think by going through send_a_data_frame, this case will 
return a HTTP2_SEND_A_DATA_FRAME_DONE return value which causes the 
this->delete_stream() to be called which will clean up the closed Http2Stream 
object.
    
    I don't know the motivation for adding the earlier check.  Perhaps we 
should just call delete_stream in that case instead of returning immediately?

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/shinrich/trafficserver ts-4813

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafficserver/pull/1052.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1052
    
----
commit ae953db9c4e0f61d1a305465960457be32cde6a2
Author: Susan Hinrichs <[email protected]>
Date:   2016-09-27T16:24:11Z

    TS-4813: Fix lingering stream.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to