Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-16574

[C++] TSAN failure in arrow-ipc-read-write-test

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 9.0.0
    • C++

    Description

      https://github.com/ursacomputing/crossbow/runs/6416775759?check_suite_focus=true

      Attaching the log in case the CI job expires. Relevant portion:

      2022-05-13T03:37:00.5908939Z [----------] 1 test from PreBuffering
      2022-05-13T03:37:00.5909275Z [ RUN      ] PreBuffering.MixedAccess
      2022-05-13T03:37:00.5909562Z ==================
      2022-05-13T03:37:00.5909980Z WARNING: ThreadSanitizer: data race (pid=17726)
      2022-05-13T03:37:00.5910339Z   Write of size 8 at 0x7b5400000d90 by thread T3:
      2022-05-13T03:37:00.5911076Z     #0 arrow::ipc::RecordBatchFileReaderImpl::ReadMessageFromBlock(arrow::ipc::internal::FileBlock const&, std::function<arrow::Status (void const*, arrow::io::RandomAccessFile*)> const&) /arrow/cpp/src/arrow/ipc/reader.cc:1389:5 (libarrow.so.900+0x3cb999a)
      2022-05-13T03:37:00.5911981Z     #1 arrow::ipc::RecordBatchFileReaderImpl::ReadDictionaries() /arrow/cpp/src/arrow/ipc/reader.cc:1397:7 (libarrow.so.900+0x3cb9d5a)
      2022-05-13T03:37:00.5912951Z     #2 arrow::ipc::RecordBatchFileReaderImpl::EnsureDictionaryReadStarted()::'lambda'()::operator()() const /arrow/cpp/src/arrow/ipc/reader.cc:1449:20 (libarrow.so.900+0x3cbcde2)
      2022-05-13T03:37:00.5915049Z     #3 std::enable_if<((!(std::is_void<arrow::Status>::value)) && (!(is_future<arrow::Status>::value))) && ((!(arrow::Future<arrow::internal::Empty>::is_empty)) || (std::is_same<arrow::Status, arrow::Status>::value)), void>::type arrow::detail::ContinueFuture::operator()<arrow::ipc::RecordBatchFileReaderImpl::EnsureDictionaryReadStarted()::'lambda'(), arrow::Status, arrow::Future<arrow::internal::Empty> >(arrow::Future<arrow::internal::Empty>, arrow::ipc::RecordBatchFileReaderImpl::EnsureDictionaryReadStarted()::'lambda'()&&) const /arrow/cpp/src/arrow/util/future.h:148:23 (libarrow.so.900+0x3cbcd14)
      2022-05-13T03:37:00.5917399Z     #4 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::ipc::RecordBatchFileReaderImpl::EnsureDictionaryReadStarted()::'lambda'(), arrow::Future<arrow::internal::Empty>, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<arrow::internal::Empty>&&, arrow::ipc::RecordBatchFileReaderImpl::EnsureDictionaryReadStarted()::'lambda'()&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:186:5 (libarrow.so.900+0x3cbcb46)
      ...
      
      2022-05-13T03:37:00.6038343Z   Previous write of size 8 at 0x7b5400000d90 by main thread:
      2022-05-13T03:37:00.6039259Z     #0 arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()::operator()() const /arrow/cpp/src/arrow/ipc/reader.cc:1348:13 (libarrow.so.900+0x3cbdb0c)
      2022-05-13T03:37:00.6042008Z     #1 std::enable_if<((!(std::is_void<arrow::Result<std::shared_ptr<arrow::ipc::Message> > >::value)) && (!(is_future<arrow::Result<std::shared_ptr<arrow::ipc::Message> > >::value))) && ((!(arrow::Future<std::shared_ptr<arrow::ipc::Message> >::is_empty)) || (std::is_same<arrow::Result<std::shared_ptr<arrow::ipc::Message> >, arrow::Status>::value)), void>::type arrow::detail::ContinueFuture::operator()<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'(), arrow::Result<std::shared_ptr<arrow::ipc::Message> >, arrow::Future<std::shared_ptr<arrow::ipc::Message> > >(arrow::Future<std::shared_ptr<arrow::ipc::Message> >, arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()&&) const /arrow/cpp/src/arrow/util/future.h:148:23 (libarrow.so.900+0x3cbd9d7)
      2022-05-13T03:37:00.6045037Z     #2 void arrow::detail::ContinueFuture::IgnoringArgsIf<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'(), arrow::Future<std::shared_ptr<arrow::ipc::Message> >, arrow::internal::Empty const&>(std::integral_constant<bool, true>, arrow::Future<std::shared_ptr<arrow::ipc::Message> >&&, arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()&&, arrow::internal::Empty const&) const /arrow/cpp/src/arrow/util/future.h:186:5 (libarrow.so.900+0x3cbd806)
      2022-05-13T03:37:00.6047374Z     #3 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'(), arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()> >::operator()(arrow::Result<arrow::internal::Empty> const&) && /arrow/cpp/src/arrow/util/future.h:599:25 (libarrow.so.900+0x3cbd628)
      2022-05-13T03:37:00.6049740Z     #4 arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'(), arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()> > >::operator()(arrow::FutureImpl const&) && /arrow/cpp/src/arrow/util/future.h:496:9 (libarrow.so.900+0x3cbd53d)
      2022-05-13T03:37:00.6052338Z     #5 arrow::internal::FnOnce<void (arrow::FutureImpl const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapResultyOnComplete::Callback<arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'(), arrow::Future<arrow::internal::Empty>::PassthruOnFailure<arrow::ipc::RecordBatchFileReaderImpl::DoPreBufferMetadata(std::vector<int, std::allocator<int> > const&)::'lambda'()> > > >::invoke(arrow::FutureImpl const&) /arrow/cpp/src/arrow/util/functional.h:152:42 (libarrow.so.900+0x3cbd4c4)
      ...
      

      Attachments

        1. tsan-failure.log
          668 kB
          Weston Pace

        Issue Links

          Activity

            People

              westonpace Weston Pace
              westonpace Weston Pace
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2h 20m
                  2h 20m