Skip to content

TS-4970: Crash in INKVConnInternal when handle_event is called after destroy() - #1109

Closed
jacksontj wants to merge 1 commit into
apache:6.2.xfrom
jacksontj:TS-4970_ATS6
Closed

TS-4970: Crash in INKVConnInternal when handle_event is called after destroy()#1109
jacksontj wants to merge 1 commit into
apache:6.2.xfrom
jacksontj:TS-4970_ATS6

Conversation

@jacksontj

Copy link
Copy Markdown
Contributor

No description provided.

@atsci

atsci commented Oct 14, 2016

Copy link
Copy Markdown

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/1009/ for details.

@atsci

atsci commented Oct 14, 2016

Copy link
Copy Markdown

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/901/ for details.

@jpeach

jpeach commented Oct 14, 2016

Copy link
Copy Markdown
Contributor

Are we using github for backports? I thought the process was to mark the JIRA?

@jacksontj

Copy link
Copy Markdown
Contributor Author

@jpeach TBH I'm not sure, I figured the PR would be good at least to get the CI to run on it-- I'm not sure what our official process is now that we do github for some things

@SolidWallOfCode

Copy link
Copy Markdown
Member

Does the destroy method also clear m_deletable?

@shinrich

Copy link
Copy Markdown
Member

Would it be easier to just back port the fix from TS-4590? I'm a bit concerned about the proposed fix in this PR. I don't think is correctly using the m_deleted/m_deletable parameters?

@jacksontj

Copy link
Copy Markdown
Contributor Author

@shinrich we could-- this patch seems to be working fine for our build though-- seemed like a less intrusive patch to an LTS release.

@jacksontj

Copy link
Copy Markdown
Contributor Author

@shinrich I did look a bit more into the other backport-- and it seems that the outcome would be quite similar-- as the handle_event method is still using this m_deleted flag to determine if the struct was deleted, so it ends up being a superset of this change.

@jacksontj

Copy link
Copy Markdown
Contributor Author

After doing some more looking, the m_deleted flag is just marking the VConn as "we should delete this" and that combined with m_deletable lets it reschedule the delete in the future when it can. The fundamental problem I'm seeing is it is double freed under some conditions-- since all events trigger a delete. This is fixed in 7.x with TS-4590 -- so I've updated this PR to workaround the issue in a simpler mechanism that more closely mirrors what is happening on 7.x

@atsci

atsci commented Oct 17, 2016

Copy link
Copy Markdown

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/1035/ for details.

@atsci

atsci commented Oct 17, 2016

Copy link
Copy Markdown

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/927/ for details.

@zwoop

zwoop commented Oct 18, 2016

Copy link
Copy Markdown
Contributor

Is this a duplicate PR?

@shinrich

Copy link
Copy Markdown
Member

Not a complete solution as Thomas noted, but may be sufficient to keep 6.2.x moving. Alternatively, we may just want to back port TS-4590.

@zwoop zwoop added the Backport Marked for backport for an LTS patch release label Oct 20, 2016
@zwoop zwoop added this to the 6.2.1 milestone Oct 20, 2016
@jacksontj

Copy link
Copy Markdown
Contributor Author

Closing the PR-- as we'll take care of this in Jira.

@jacksontj jacksontj closed this Oct 26, 2016
@zwoop zwoop modified the milestone: 6.2.1 May 4, 2017
bneradt pushed a commit to bneradt/trafficserver that referenced this pull request Jan 23, 2026
…pache#1109)

proxy.config.ssl.session_cache.value allows the user to configure
whether OpenSSL internally manages the TLS session cache for resumption
or whether ATS does via callbacks. For our user_agent_session_* metrics,
we use the SSL_CTX_sess_* OpenSSL API to populate them. This works for
hit, timeout, etc, for both when the session cache is managed by OpenSSL
and when it is managed by ATS, with the exception of
SSL_CTX_sess_misses. That metric only counts internal cache misses:

> SSL_CTX_sess_misses() returns the number of sessions proposed by
> clients that were not found in the internal session cache in server
> mode.

The result is that when ATS manages the session cache, which is the
default configuration, proxy.process.ssl.user_agent_session_miss is
always zero. This patch uses our ssl_session_cache_miss metric to
augment the stat to be accurate for ATS-managed caching.

(cherry picked from commit 75f194c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport Marked for backport for an LTS patch release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants