ShuMing Li created ARROW-4190:
---------------------------------

             Summary: [C++] memcpy_ssse3_back Segmentation fault
                 Key: ARROW-4190
                 URL: https://issues.apache.org/jira/browse/ARROW-4190
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
    Affects Versions: 0.8.0
            Reporter: ShuMing Li


Environment:

> linux amd64

 

Stack Info:

```
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/sbin/kudu-tserver 
--server_dump_info_path=/var/run/hadoop/kudu-tserver-kud'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007f8f6cc010d0 in __memcpy_ssse3_back () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install 
cyrus-sasl-lib-2.1.26-19.2.1.alios7.x86_64 
cyrus-sasl-plain-2.1.26-19.2.1.alios7.x86_64 glibc-2.17-106.alios7.8.x86_64 
keyutils-libs-1.5.8-3.1.alios7.x86_64 krb5-libs-1.13.2-10.1.alios7.x86_64 
libcom_err-1.43.5-7.1.alios7.x86_64 libdb-5.3.21-19.1.alios7.x86_64 
libgcc-4.8.5-4.1.alios7.x86_64 libselinux-2.2.2-6.1.alios7.x86_64 
libstdc++-4.8.5-4.1.alios7.x86_64 
nss-softokn-freebl-3.16.2.3-13.1.alios7.x86_64 
openssl-libs-1.0.1e-52.alios7.5.x86_64 pcre-8.32-15.1.alios7.x86_64 
xz-libs-5.1.2-12alpha.1.alios7.x86_64 zlib-1.2.7-16.2.alios7.x86_64
(gdb) bt
#0 0x00007f8f6cc010d0 in __memcpy_ssse3_back () from /lib64/libc.so.6
#1 0x0000000001c7f5e7 in arrow::io::BufferReader::Read (this=0x7f8f38f145d0, 
nbytes=4, bytes_read=0x7f8f38f14120, buffer=<optimized out>)
 at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/io/memory.cc:260
#2 0x0000000001ca7da3 in arrow::ipc::ReadMessage (file=0x7f8f38f145d0, 
message=0x7f8f38f14400) at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/ipc/message.cc:213
#3 0x0000000001ca92e5 in arrow::ipc::InputStreamMessageReader::ReadNextMessage 
(this=<optimized out>, message=<optimized out>)
 at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/ipc/message.cc:252
#4 0x0000000001c832d7 in arrow::ipc::ReadMessageAndValidate (reader=<optimized 
out>, expected_type=expected_type@entry=arrow::ipc::Message::RECORD_BATCH, 
allow_null=allow_null@entry=true,
 message=message@entry=0x7f8f38f14400) at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/ipc/reader.cc:370
#5 0x0000000001c86c3a in ReadNext (batch=0x7f8f38f14590, this=0x6421760) at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/ipc/reader.cc:442
#6 arrow::ipc::RecordBatchStreamReader::ReadNext (this=<optimized out>, 
batch=0x7f8f38f14590) at 
/home/admin/work/kudu/thirdparty/src/apache-arrow-0.8.0/cpp/src/arrow/ipc/reader.cc:496

```

Code Sample:
```
// TEST
 std::shared_ptr<arrow::ipc::RecordBatchWriter> writer;
 std::shared_ptr<arrow::PoolBuffer> serialized_buffer = 
std::make_shared<arrow::PoolBuffer>(arrow::default_memory_pool());
 std::shared_ptr<arrow::io::BufferOutputStream> arrow_stream =
 std::make_shared<arrow::io::BufferOutputStream>(
 serialized_buffer);
 arrow::ipc::RecordBatchStreamWriter::Open(arrow_stream.get(), 
(*arrow_record_batch)[0]->schema(), &writer);

int j = 0;
 for (const auto& batch: *arrow_record_batch) {
  LOG(INFO) << "start to write batch:" << j++;
  writer->WriteRecordBatch(*batch);
 }
 writer->Close();
 arrow_stream->Close();

arrow::io::BufferReader buf_reader(serialized_buffer);
 std::shared_ptr<arrow::RecordBatchReader> reader;
 arrow::ipc::RecordBatchStreamReader::Open(&buf_reader, &reader);
 std::shared_ptr<arrow::RecordBatch> chunk;
 int i = 0;
 while (true) {
  reader->ReadNext(&chunk);
  LOG(INFO) << "start to handle batch:" << i++ << ", row number:" << 
chunk->num_rows();
  if (chunk == nullptr) {
    break;
  }
 }
```



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to