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.
---