GitHub user hopkings2008 opened a pull request:

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

    TS-3196: Core dump when handle event check_inactivity

    From the core dump, if we use ssl and spdy, so in the function
    'ProtocolProbeTrampoline::ioCompletionEvent', it will first disable the 
read io
    adn handover the continuation of read.vio._cont from 
'ProtocolProbeTrampoline'
    to 'SpdyClientSession' by below two steps:
    1. first disable current io by using 'netvc->do_io_read(this, 0, NULL)'.
    2. change the read.vio._cont by using
    'probeParent->endpoint[key]>accept(netvc, this>iobuf, reader);' which will 
be
    'SpdySessionAccept::accept' in our case. and in the end, it will call
    'SpdyClientSession::state_session_start' which will call 
'this->vc->do_io_read'
    to set read.vio._cont to SpdyClientSession.
    the main point is that the function 'SpdySessionAccept::accept' function 
will
    put an SpdyClientSession event into eventProcessor for net
    'eventProcessor.schedule_imm(sm, ET_NET);'
    and because each 'net' thread will put a check_inactivity event into the 
queue
    So, in the end, between 'netvc->do_io_read(this, 0, NULL)' and
    spdy handler is set, the
    check_inactivity may be executed, and if so, the crash will occur.

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

    $ git pull https://github.com/yahoo/trafficserver TS-3196

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

    https://github.com/apache/trafficserver/pull/147.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 #147
    
----
commit e943879c5961a18aa9146d32c805ae80a3a5d894
Author: zouyu <z...@yahoo-inc.com>
Date:   2014-11-14T06:23:43Z

    TS-3196: Core dump when handle event check_inactivity

----


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to