You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2015/09/04 18:58:46 UTC

[jira] [Commented] (TS-3867) traffic_server seg faults in qsort call inside SSLContextStorage destructor

    [ https://issues.apache.org/jira/browse/TS-3867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14731051#comment-14731051 ] 

ASF subversion and git services commented on TS-3867:
-----------------------------------------------------

Commit f06382e468a9116149164080e16782b0f4cd55e7 in trafficserver's branch refs/heads/master from [~reveller]
[ https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;h=f06382e ]

TS-3867 - qsort updated to a median of 3 qsort.
This closes #286.


> traffic_server seg faults in qsort call inside SSLContextStorage destructor
> ---------------------------------------------------------------------------
>
>                 Key: TS-3867
>                 URL: https://issues.apache.org/jira/browse/TS-3867
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Configuration, SSL
>            Reporter: Steven Feltner
>            Assignee: Alan M. Carroll
>             Fix For: 6.1.0
>
>
> With 9400+ ssl certs configured in ssl_multicert.config, traffic_server will seg fault after anywhere from two mins to an hour.  May be linked to issuing a 'traffic_line -x' (particularly after removing an entry from ssl_multicert.config), but does not always correlate.
> #10863 0x00000000006e3d14 in qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062148, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10864 qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062148, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10865 0x00000000006e3d14 in qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062100, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10866 qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062100, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10867 0x00000000006e3d14 in qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac7400620b8, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10868 qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac7400620b8, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10869 0x00000000006e3d14 in qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062070, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10870 qsort_VecRef<SSLCertContext> (left=0x2ac740109950, right=0x2ac740062070, lt=0x6e1c70 <SSLCtxCompare(SSLCertContext const&, SSLCertContext const&)>) at ../../lib/ts/Vec.h:1035
> #10871 0x00000000006e2f76 in qsort_VecRef<SSLCertContext> (this=0x2d91540, __in_chrg=<value optimized out>) at ../../lib/ts/Vec.h:1035
> #10872 qsort (this=0x2d91540, __in_chrg=<value optimized out>) at ../../lib/ts/Vec.h:1052
> #10873 SSLContextStorage::~SSLContextStorage (this=0x2d91540, __in_chrg=<value optimized out>) at SSLCertLookup.cc:302
> #10874 0x00000000006e2fe9 in SSLCertLookup::~SSLCertLookup (this=0x2d91510, __in_chrg=<value optimized out>) at SSLCertLookup.cc:181
> #10875 0x00000000006e3029 in SSLCertLookup::~SSLCertLookup (this=0x2d91510, __in_chrg=<value optimized out>) at SSLCertLookup.cc:182
> #10876 0x0000000000646097 in ConfigInfoReleaser::handle_event (this=0x2ac7f9450390) at ProxyConfig.cc:105
> #10877 0x0000000000721cf3 in handleEvent (this=0x2ac71e8bf010, e=0x18649c10, calling_code=2) at I_Continuation.h:145
> #10878 EThread::process_event (this=0x2ac71e8bf010, e=0x18649c10, calling_code=2) at UnixEThread.cc:128
> #10879 0x0000000000722891 in EThread::execute (this=0x2ac71e8bf010) at UnixEThread.cc:207
> #10880 0x0000000000721112 in spawn_thread_internal (a=0x264bbf0) at Thread.cc:85
> #10881 0x00000031780079d1 in start_thread () from /lib64/libpthread.so.0
> #10882 0x00000031778e88fd in clone () from /lib64/libc.so.6
> (gdb) f 10873
> #10873 SSLContextStorage::~SSLContextStorage (this=0x2d91540, __in_chrg=<value optimized out>) at SSLCertLookup.cc:302
> 302       this->ctx_store.qsort(SSLCtxCompare);
> (gdb) l
> 297
> 298     SSLContextStorage::~SSLContextStorage()
> 299     {
> 300       // First sort the array so we can efficiently detect duplicates
> 301       // and avoid the double free
> 302       this->ctx_store.qsort(SSLCtxCompare);
> 303       SSL_CTX *last_ctx = NULL;
> 304       for (unsigned i = 0; i < this->ctx_store.length(); ++i) {
> 305         if (this->ctx_store[i].ctx != last_ctx) {
> 306           last_ctx = this->ctx_store[i].ctx;
> (gdb) p this
> $1 = (SSLContextStorage * const) 0x2d91540
> (gdb) p *this
> $2 = {wildcards = {_vptr.Trie = 0x792750, static N_NODE_CHILDREN = 256, m_root = {value = 0x0, occupied = false, rank = 0, children = {0x0 <repeats 97 times>, 0xa867cf0, 0x0, 0x39bad80, 0x0, 0x6540130, 0x0, 0x0, 0x0, 0x9955210,
>         0x0, 0x0, 0x0, 0xa44d480, 0x3ccb3c0, 0x6a7f860, 0x0, 0x0, 0x0, 0x0, 0x0, 0x61191a0, 0x0 <repeats 138 times>}}, m_value_list = {<DLL<SSLContextStorage::ContextRef, SSLContextStorage::ContextRef::Link_link>> = {
>         head = 0x39b8db0}, tail = 0xb9c48a0}}, hostnames = 0x2d91df0, ctx_store = {n = 28603, i = 0, v = 0x2ac740062010, e = {{ctx = 0x2d91f80, opt = SSLCertContext::OPT_NONE, keyblock = 0x2d940e0}, {ctx = 0x2d91f80,
>         opt = SSLCertContext::OPT_NONE, keyblock = 0x0}, {ctx = 0x2d91f80, opt = SSLCertContext::OPT_NONE, keyblock = 0x0}, {ctx = 0x2d96ee0, opt = SSLCertContext::OPT_NONE, keyblock = 0x2d92f10}}}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)