GitHub user zizhong opened a pull request:

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

    fix TS-4195: crash when stop trafficserver

    Because of `psiginfo`, `psignal` and `exit`, which call `malloc` and `free` 
inside `proxy_signal_handler`. ATS will crash from time to time when stop.
    
    > A signal handler can be called at any time, including during times when 
another call to malloc is in progress. If this happens, one of two things will 
occur:
    > 
    > Your process will deadlock inside the signal handler, because malloc will 
be unable to acquire the heap lock.
    > Your process will corrupt its heap, because malloc does acquire the lock 
(or doesn't think it needs it), then proceeds to render the heap inconsistent, 
leading to a later crash.
    
    From 
[here](http://stackoverflow.com/questions/3366307/why-is-malloc-not-async-signal-safe)
    
    Tested with a script repeating starting and stopping ATS on RHEL 6.6, the 
current master crashes after about 2~10 times. This patch doesn't crash after 
6k+ tries.

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

    $ git pull https://github.com/zizhong/trafficserver TS-4195

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

    https://github.com/apache/trafficserver/pull/1457.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 #1457
    
----
commit 8a9365aebd0eaa3a9fd451703996060c869fa7f5
Author: Zizhong Zhang <zizh...@zizhang-ld2.linkedin.biz>
Date:   2017-02-16T18:03:15Z

    fix TS-4195: double free when stop trafficserver

----


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