[
https://issues.apache.org/jira/browse/THRIFT-2536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14711501#comment-14711501
]
ASF GitHub Bot commented on THRIFT-2536:
----------------------------------------
GitHub user evanj opened a pull request:
https://github.com/apache/thrift/pull/595
THRIFT-2536: Java: TBinaryProtocol: Use a single temp byte[] buffer
Reduces allocations and GC when TBinaryProtocol is allocated repeatedly.
Originally separate byte[] arrays were allocated for each integer type, and
a separate array for input and output. However, one buffer of the largest
size (8 bytes for i64) can be used for all purposes.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/evanj/thrift THRIFT-2536
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/thrift/pull/595.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 #595
----
commit 9a5668e8f2afd1440a94952091bec9f3da64dd3e
Author: Evan Jones <[email protected]>
Date: 2015-08-25T15:51:07Z
THRIFT-2536: Java: TBinaryProtocol: Use a single temp byte[] buffer
Reduces allocations and GC when TBinaryProtocol is allocated repeatedly.
Originally separate byte[] arrays were allocated for each integer type, and
a separate array for input and output. However, one buffer of the largest
size (8 bytes for i64) can be used for all purposes.
----
> new TSocket, uninitialised value reported by valgrind
> -----------------------------------------------------
>
> Key: THRIFT-2536
> URL: https://issues.apache.org/jira/browse/THRIFT-2536
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 1.0
> Environment: BSD, Valgrind
> Reporter: Christoph Wollgarten
> Priority: Minor
>
> ========================================================================================
> src:
> https://apache.googlesource.com/thrift/+/master/lib/cpp/src/thrift/transport/TSocket.cpp
> ========================================================================================
> code:
> boost::shared_ptr<TSocket> socket(new TSocket("192.168.0.1", 9090));
> boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
> boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
> LancomLocationBasedServices::LbsControlClient client(protocol);
> transport->open();
> ========================================================================================
> valgrind --leak-check=yes --track-origins=yes binary
> =>
> ==49066== Conditional jump or move depends on uninitialised value(s)
> ==49066== at 0x136A443:
> apache::thrift::transport::TSocket::openConnection(addrinfo*)
> (TSocket.cpp:309)
> ==49066== by 0x136B3F8: apache::thrift::transport::TSocket::local_open()
> (TSocket.cpp:392)
> by *********: transport->open()
> ==49066== Uninitialised value was created by a stack allocation
> ==49066== at 0x136A14D:
> apache::thrift::transport::TSocket::openConnection(addrinfo*)
> (TSocket.cpp:180)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)