[ https://issues.apache.org/jira/browse/ARROW-2189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16421857#comment-16421857 ]
Kouhei Sutou commented on ARROW-2189: ------------------------------------- Thanks. I confirmed it. I also confirmed the followings: * Apache Arrow C++ compiled with g++-4.8 + -DCMAKE_BUILD_TYPE=Debug and foo.cpp compiled with g++-4.9 work well * Apache Arrow C++ compiled with g++-4.8 + -DCMAKE_BUILD_TYPE=Release and foo.cpp compiled with g++-4.9 don't work (crashed) Backtrace: {noformat} Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) bt full #0 0x0000000000000000 in ?? () No symbol table info available. #1 0x00007ffff7941490 in arrow::ArrayBuilder::Init ( this=this@entry=0x7fffffffe640, capacity=capacity@entry=32) at /arrow/cpp/src/arrow/builder.cc:67 _s = {state_ = 0x20} to_alloc = 4 byte_capacity = <optimized out> #2 0x00007ffff79584e0 in arrow::PrimitiveBuilder<arrow::Int64Type>::Init ( this=0x7fffffffe640, capacity=32) at /arrow/cpp/src/arrow/builder.cc:233 _s = {state_ = 0x20} nbytes = <optimized out> #3 0x00007ffff7948b58 in arrow::PrimitiveBuilder<arrow::Int64Type>::Resize ( this=0x7fffffffe640, capacity=32) at /arrow/cpp/src/arrow/builder.cc:253 _s = {state_ = 0x1} #4 0x00007ffff793e7ab in arrow::ArrayBuilder::Reserve ( this=this@entry=0x7fffffffe640, elements=elements@entry=1) at /arrow/cpp/src/arrow/builder.cc:113 No locals. #5 0x000000000040168f in Append (val=1, this=0x7fffffffe640) at /tmp/local-4.8/include/arrow/builder.h:276 _s = {state_ = 0x616848} #6 main () at foo.cpp:10 pool = 0x7ffff7dd91a0 <arrow::default_memory_pool()::default_memory_pool_> builder = {<arrow::PrimitiveBuilder<arrow::Int64Type>> = {<arrow::ArrayBuilder> = { _vptr.ArrayBuilder = 0x4024f0 <vtable for arrow::NumericBuilder<arrow::Int64Type>+16>, type_ = std::shared_ptr (count 2, weak 0) 0x616848, pool_ = 0x7ffff7dd91a0 <arrow::default_memory_pool()::default_memory_pool_>, null_bitmap_ = std::shared_ptr (count 1, weak 0) 0x616890, null_count_ = 0, null_bitmap_data_ = 0x0, length_ = 0, capacity_ = 0, children_ = std::vector of length 0, capacity 0}, data_ = std::shared_ptr (empty) 0x0, raw_data_ = 0x0}, <No data fields>} buffer = <optimized out> (gdb) f 1 #1 0x00007ffff7941490 in arrow::ArrayBuilder::Init ( this=this@entry=0x7fffffffe640, capacity=capacity@entry=32) at /arrow/cpp/src/arrow/builder.cc:67 67 RETURN_NOT_OK(null_bitmap_->Resize(to_alloc)); (gdb) list 62 } 63 64 Status ArrayBuilder::Init(int64_t capacity) { 65 int64_t to_alloc = BitUtil::CeilByte(capacity) / 8; 66 null_bitmap_ = std::make_shared<PoolBuffer>(pool_); 67 RETURN_NOT_OK(null_bitmap_->Resize(to_alloc)); 68 // Buffers might allocate more then necessary to satisfy padding requirements 69 const int64_t byte_capacity = null_bitmap_->capacity(); 70 capacity_ = capacity; 71 null_bitmap_data_ = null_bitmap_->mutable_data(); (gdb) p to_alloc $3 = 4 {noformat} I don't know why... BTW, why do you want to use g++-4.9? > [C++] Seg. fault on make_shared<PoolBuffer> > ------------------------------------------- > > Key: ARROW-2189 > URL: https://issues.apache.org/jira/browse/ARROW-2189 > Project: Apache Arrow > Issue Type: Bug > Components: C++ > Affects Versions: 0.8.0 > Environment: Debian jessie in a Docker container > libarrow-dev 0.8.0-2 (Ubuntu trusty) > Reporter: Rares Vernica > Priority: Major > Attachments: Dockerfile, foo.cpp > > > When creating a {{PoolBuffer}}, I get a {{Segmentation fault}} when I use > {{make_shared}}. If I use the {{shared_ptr}} constructor of {{reset}}, it > works fine. Here is an example: > {code:java} > #include <arrow/builder.h> > int main() > { > arrow::MemoryPool* pool = arrow::default_memory_pool(); > arrow::Int64Builder builder(pool); > builder.Append(1); > // #1 > // std::shared_ptr<arrow::PoolBuffer> buffer(new arrow::PoolBuffer(pool)); > // #2 > // std::shared_ptr<arrow::PoolBuffer> buffer; > // buffer.reset(new arrow::PoolBuffer(pool)); > // #3 > auto buffer = std::make_shared<arrow::PoolBuffer>(pool); > } > {code} > {code:java} > > g++-4.9 -std=c++11 -larrow foo.cpp && ./a.out > Segmentation fault (core dumped) > {code} > The example works fine with {{#1}} or {{#2}} options. It also works if the > builder is commented out. -- This message was sent by Atlassian JIRA (v7.6.3#76005)