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

Anshul Mohan Gupta commented on THRIFT-5482:
--------------------------------------------

[~emmenlau]  Thanks for looking into the PR. Internally we are using thrift 
0.12.0 so I patched 0.12.0 and verified it but this should also apply to master 
as well. Thanks!

> Memory leak during SSL handshake
> --------------------------------
>
>                 Key: THRIFT-5482
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5482
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.12.0
>         Environment: Build env: Windows 2019
> Issue observed: Windows 2012R2
> OpenSSL: 1.1.1k
>            Reporter: Anshul Mohan Gupta
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> We observed continuous memory increase in the thrift server during SSL 
> handshake and this memory increase was crashing the windows hosts as there 
> was no memory left for other applications to work. During further 
> investigation, we found that ERR_remove_state has been made stub in the later 
> versions of OpenSSL, and recommended function to clear the thread state is 
> OPENSSL_thread_stop. Once I made this change we did not observe any memory 
> leak further. We are using OpenSSL 1.1.1k with thrift 0.12.0. Hence I am 
> putting the patch for the same. Thanks!
> I am adding call stack sample leak trace
> {code}
> Call stack sample 2
> Address   0x0000000e`00bdd770
> Allocation Time  00:00:45 since tracking started
> Allocation Size 64 Bytes
> Function
> LeakTrack+1f109
> !_malloc_base+44
> !CRYPTO_zalloc+59
> !BN_CTX_new+20
> !rsa_ossl_public_decrypt+d8
> !pkey_rsa_verify+245
> !EVP_DigestVerify+15f
> !tls_process_cert_verify+42a
> !read_state_machine+24f
> !state_machine+2d2
> !SSL_do_handshake+bc
> !apache::thrift::transport::TSSLSocket::initializeHandshake+dc
> !apache::thrift::transport::TSSLSocket::read+3c
> !apache::thrift::transport::TBufferedTransport::readSlow+56
> !apache::thrift::transport::TBufferBase::readAll+88
> !apache::thrift::protocol::TVirtualProtocol<apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport,apache::thrift::protocol::TNetworkBigEndian>,apache::thrift::protocol::TProtocolDefaults>::readMessageBegin_virt+4c
> !apache::thrift::TMultiplexedProcessor::process+87
> !apache::thrift::server::TConnectedClient::run+16a
> !apache::thrift::server::TThreadedServer::TConnectedClientRunner::run+17
> !apache::thrift::concurrency::StdThread::threadMain+6c
> !std::thread::_Invoke<std::tuple<int 
> (__cdecl*)(std::shared_ptr<Reducted>),std::shared_ptr<Reducted> >,0,1>+3e
> !thread_start<unsigned int (__cdecl*)(void * __ptr64)>+50
> kernel32!BaseThreadInitThunk+22
> ntdll!RtlUserThreadStart+34
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to