You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Antoine Pitrou (Jira)" <ji...@apache.org> on 2020/11/19 12:57:00 UTC
[jira] [Assigned] (ARROW-10651) [C++] alloc-dealloc-mismatch in
s3fs.cc
[ https://issues.apache.org/jira/browse/ARROW-10651?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Antoine Pitrou reassigned ARROW-10651:
--------------------------------------
Assignee: Chiyang Wan
> [C++] alloc-dealloc-mismatch in s3fs.cc
> ---------------------------------------
>
> Key: ARROW-10651
> URL: https://issues.apache.org/jira/browse/ARROW-10651
> Project: Apache Arrow
> Issue Type: Improvement
> Components: C++
> Affects Versions: 3.0.0
> Environment: Compile with clang memory sanitizer
> Reporter: Chiyang Wan
> Assignee: Chiyang Wan
> Priority: Trivial
> Labels: easyfix, pull-request-available
> Fix For: 3.0.0
>
> Original Estimate: 24h
> Time Spent: 40m
> Remaining Estimate: 23h 20m
>
> Checking
> [https://github.com/apache/arrow/blob/256d0dc3f712154100aa6e0a610383b189008a83/cpp/src/arrow/filesystem/s3fs.cc#L611]
> {code:cpp}
> Aws::IOStreamFactory AwsWriteableStreamFactory(void* data, int64_t nbytes){
> return [=]() { return new StringViewStream(data, nbytes); };
> }
> {code}
> Instead, there is supposed to be using `Aws::New` rather than c++'s own `new`
> {code:cpp}
> Aws::IOStreamFactory AwsWriteableStreamFactory(void* data, int64_t nbytes) {
> return [=]() { return Aws::New<StringViewStream>("", data, nbytes); };
> }
> {code}
> This is easy to be checked out when compiled with clang memory sanitizer.
> {code:cpp}
> =================================================================
> ==148546==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x6110001f1e80
> #0 0xcac4e2 in free /local/mnt/workspace/bcain_0721/llvm/utils/release/final/llvm.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:124:3
> #1 0x7ff039bb10f0 in Aws::Utils::Stream::ResponseStream::~ResponseStream() (/opt/dependency-clang-x86_64-Linux/package/lib/libaws-cpp-sdk-core.so+0xc20f0)
> #2 0x7ff03fe05157 in Aws::S3::Model::GetObjectResult::~GetObjectResult() /opt/dependency-clang-x86_64-Linux/package/include/aws/s3/model/GetObjectResult.h:30:20
> #3 0x7ff03fe038dd in Aws::Utils::Outcome<Aws::S3::Model::GetObjectResult, Aws::S3::S3Error>::~Outcome() /opt/dependency-clang-x86_64-Linux/package/include/aws/core/utils/Outcome.h:25:15
> 0x6110001f1e80 is located 0 bytes inside of 256-byte region [0x6110001f1e80,0x6110001f1f80)
> allocated by thread T0 here:
> #0 0xcdbd52 in operator new(unsigned long) /local/mnt/workspace/bcain_0721/llvm/utils/release/final/llvm.src/projects/compiler-rt/lib/asan/asan_new_delete.cc:106:3
> #1 0x7ff03fdd9af0 in dbcommon::AwsWriteableStreamFactory(void*, long)::$_0::operator()() const /home/gpadmin/dev/hornet-opensource/dbcommon/src/dbcommon/filesystem/s3/s3-file-system.cc:157:25
> #2 0x7ff03fdd9aac in decltype(std::__1::forward<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0&>(fp)()) std::__1::__invoke<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0&>(dbcommon::AwsWriteableStreamFactory(void*, long)::$_0&) /opt/clang/include/c++/v1/type_traits:4353:1
> #3 0x7ff03fdd9a3c in std::__1::basic_iostream<char, std::__1::char_traits<char> >* std::__1::__invoke_void_return_wrapper<std::__1::basic_iostream<char, std::__1::char_traits<char> >*>::__call<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0&>(dbcommon::AwsWriteableStreamFactory(void*, long)::$_0&) /opt/clang/include/c++/v1/__functional_base:318:16
> #4 0x7ff03fdd9a0c in std::__1::__function::__alloc_func<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0, std::__1::allocator<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0>, std::__1::basic_iostream<char, std::__1::char_traits<char> >* ()>::operator()() /opt/clang/include/c++/v1/functional:1527:16
> #5 0x7ff03fdd7248 in std::__1::__function::__func<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0, std::__1::allocator<dbcommon::AwsWriteableStreamFactory(void*, long)::$_0>, std::__1::basic_iostream<char, std::__1::char_traits<char> >* ()>::operator()() /opt/clang/include/c++/v1/functional:1651:12
> #6 0x7ff039bb0fa2 in Aws::Utils::Stream::ResponseStream::ResponseStream(std::__1::function<std::__1::basic_iostream<char, std::__1::char_traits<char> >* ()> const&) (/opt/dependency-clang-x86_64-Linux/package/lib/libaws-cpp-sdk-core.so+0xc1fa2)
> SUMMARY: AddressSanitizer: alloc-dealloc-mismatch /local/mnt/workspace/bcain_0721/llvm/utils/release/final/llvm.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:124:3 in free
> ==148546==HINT: if you don't care about these errors you may set ASAN_OPTIONS=alloc_dealloc_mismatch=0
> ==148546==ABORTING
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)