Hello,

I am seeing a deadlock when destructing an ObjectOutputStream. I have
attached the stack trace.

I did some debugging and found that the issue seems to be that the mutex in
question is already held by this thread (I checked the __owner field in the
pthread_mutex_t which points to the hanging thread)

Unfortunately the stack trace doesn’t show exactly which mutex it is trying
to lock. I wonder if someone more familiar with the IO code has some ideas
what might be the issue and where to dig deeper?

Appreciate the help,
Li
Thread 39 (Thread 0xe2199eee700 (LWP 1392) "python3.10"):
#0  __lll_lock_wait (futex=futex@entry=0xe2158016c60, private=0) at 
lowlevellock.c:52
#1  0x00000e223fe14843 in __GI___pthread_mutex_lock (mutex=0xe2158016c60) at 
../nptl/pthread_mutex_lock.c:80
#2  0x00000e223a4c7be3 in virtual thunk to arrow::fs::(anonymous 
namespace)::ObjectOutputStream::Close() () at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/status.h:140
#3  0x00000e223993eaef in arrow::io::internal::CloseFromDestructor 
(file=file@entry=0xe2158005c80) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/io/interfaces.cc:284
#4  0x00000e223a4b9250 in arrow::fs::(anonymous 
namespace)::ObjectOutputStream::~ObjectOutputStream (this=0xe2158005b40, 
__in_chrg=<optimized out>, __vtt_parm=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/filesystem/s3fs.cc:1398
#5  __gnu_cxx::new_allocator<arrow::fs::(anonymous 
namespace)::ObjectOutputStream>::destroy<arrow::fs::(anonymous 
namespace)::ObjectOutputStream> (__p=0xe2158005b40, this=0xe2158005b40) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/ext/new_allocator.h:168
#6  std::allocator_traits<std::allocator<arrow::fs::(anonymous 
namespace)::ObjectOutputStream> >::destroy<arrow::fs::(anonymous 
namespace)::ObjectOutputStream> (__p=0xe2158005b40, __a=...) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/alloc_traits.h:535
#7  std::_Sp_counted_ptr_inplace<arrow::fs::(anonymous 
namespace)::ObjectOutputStream, std::allocator<arrow::fs::(anonymous 
namespace)::ObjectOutputStream>, (__gnu_cxx::_Lock_policy)2>::_M_dispose 
(this=0xe2158005b30) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:528
#8  0x00000e223c41ddda in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release 
(this=0xe2158005b30) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:168
#9  0x00000e223bbb62a8 in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count 
(this=0xe21580f2b40, __in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:705
#10 std::__shared_ptr<arrow::io::OutputStream, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0xe21580f2b38, 
__in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:1154
#11 std::shared_ptr<arrow::io::OutputStream>::~shared_ptr (this=0xe21580f2b38, 
__in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr.h:122
#12 arrow::dataset::FileWriter::~FileWriter (this=0xe21580f2b10, 
__in_chrg=<optimized out>) at 
/tmp/build/ts/arrow/dataset/c/src/arrow/dataset/file_base.h:378
#13 arrow::dataset::ParquetFileWriter::~ParquetFileWriter (this=0xe21580f2b10, 
__in_chrg=<optimized out>) at 
/tmp/build/ts/arrow/dataset/c/src/arrow/dataset/file_parquet.h:282
#14 arrow::dataset::ParquetFileWriter::~ParquetFileWriter (this=0xe21580f2b10, 
__in_chrg=<optimized out>) at 
/tmp/build/ts/arrow/dataset/c/src/arrow/dataset/file_parquet.h:282
#15 0x00000e223c41ddda in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release 
(this=0xe21580b9a10) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:168
#16 0x00000e223bae3f1c in 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count 
(this=0x5b665b834690, __in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:705
#17 std::__shared_ptr<arrow::dataset::FileWriter, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x5b665b834688, 
__in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:1154
#18 std::shared_ptr<arrow::dataset::FileWriter>::~shared_ptr 
(this=0x5b665b834688, __in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr.h:122
#19 arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue::~DatasetWriterFileQueue 
(this=0x5b665b834670, __in_chrg=<optimized out>) at 
/tmp/build/ts/arrow/dataset/c/src/arrow/dataset/dataset_writer.cc:140
#20 std::default_delete<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue>::operator() (__ptr=0x5b665b834670, 
this=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:85
#21 std::unique_ptr<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue, 
std::default_delete<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue> >::~unique_ptr (this=0x5b665b833800, 
__in_chrg=<optimized out>) at 
/tmp/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:361
#22 ~<lambda> (this=0x5b665b8337f8, __in_chrg=<optimized out>) at 
/tmp/build/ts/arrow/dataset/c/src/arrow/dataset/dataset_writer.cc:364
#23 
arrow::internal::FnOnce<arrow::Status()>::FnImpl<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterDirectoryQueue::OpenFileQueue(const 
string&)::<lambda()> >::~FnImpl (this=0x5b665b8337f0, __in_chrg=<optimized 
out>) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/functional.h:150
#24 
arrow::internal::FnOnce<arrow::Status()>::FnImpl<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterDirectoryQueue::OpenFileQueue(const 
string&)::<lambda()> >::~FnImpl(void) (this=0x5b665b8337f0, 
__in_chrg=<optimized out>) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/functional.h:150
#25 0x00000e223995cd6e in 
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release 
(this=0x5b665b834970) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:168
#26 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count 
(this=<optimized out>, __in_chrg=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:705
#27 std::__shared_ptr<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::State, 
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=<optimized out>, 
__in_chrg=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr_base.h:1154
#28 std::shared_ptr<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::State>::~shared_ptr (this=<optimized out>, 
__in_chrg=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/shared_ptr.h:122
#29 ~<lambda> (this=<optimized out>, __in_chrg=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/async_util.cc:428
#30 
arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>,
 arrow::Future<>::PassthruOnFailure<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>
 > >::operator() (result=..., this=0xe21800fa338) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:549
#31 
arrow::Future<arrow::internal::Empty>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::util::(anonymous
 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>,
 arrow::Future<>::PassthruOnFailure<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>
 > > >::operator() (impl=..., this=0xe21800fa338) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:442
#32 arrow::internal::FnOnce<void(const 
arrow::FutureImpl&)>::FnImpl<arrow::Future<>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::util::(anonymous
 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>,
 arrow::Future<>::PassthruOnFailure<arrow::util::(anonymous 
namespace)::AsyncTaskGroupImpl::AddTask(std::unique_ptr<arrow::util::AsyncTaskScheduler::Task>)::WrapperTask::operator()()::<lambda()>
 > > > >::invoke(const arrow::FutureImpl &) (this=0xe21800fa330, a#0=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/functional.h:152
#33 0x00000e22399a02a0 in arrow::internal::FnOnce<void (arrow::FutureImpl 
const&)>::operator()(arrow::FutureImpl const&) && (a#0=..., this=0xe2180032070) 
at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:173
#34 arrow::ConcreteFutureImpl::RunOrScheduleCallback 
(self=std::shared_ptr<arrow::FutureImpl> (use count 2, weak count 1) = {...}, 
callback_record=..., in_add_callback=in_add_callback@entry=false) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:110
#35 0x00000e22399a05dd in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed 
(this=<optimized out>, state=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:148
#36 0x00000e223999d83a in arrow::ConcreteFutureImpl::DoMarkFailed 
(this=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:41
#37 0x00000e223bedc0a5 in arrow::Future<arrow::internal::Empty>::DoMarkFinished 
(res=..., this=0xe2199eed210) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:660
#38 arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, 
void> (this=0xe2199eed210, s=...) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:409
#39 0x00000e223bae3395 in 
arrow::detail::ContinueFuture::operator()<arrow::Future<>::PassthruOnFailure<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()> >, const 
arrow::Status&> (this=<synthetic pointer>, f=..., next=...) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:167
#40 
arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()> > >::operator() 
(result=..., this=<optimized out>) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:550
#41 
arrow::Future<arrow::internal::Empty>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()> > > >::operator() 
(impl=..., this=<optimized out>) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:442
#42 arrow::internal::FnOnce<void(const 
arrow::FutureImpl&)>::FnImpl<arrow::Future<>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::dataset::internal::(anonymous
 namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::dataset::internal::(anonymous 
namespace)::DatasetWriterFileQueue::DoFinish()::<lambda()> > > > 
>::invoke(const arrow::FutureImpl &) (this=<optimized out>, a#0=...) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/functional.h:152
#43 0x00000e22399a02a0 in arrow::internal::FnOnce<void (arrow::FutureImpl 
const&)>::operator()(arrow::FutureImpl const&) && (a#0=..., this=0xe21800fa0d0) 
at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:173
#44 arrow::ConcreteFutureImpl::RunOrScheduleCallback 
(self=std::shared_ptr<arrow::FutureImpl> (use count 2, weak count 1) = {...}, 
callback_record=..., in_add_callback=in_add_callback@entry=false) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:110
#45 0x00000e22399a05dd in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed 
(this=<optimized out>, state=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:148
#46 0x00000e223999d83a in arrow::ConcreteFutureImpl::DoMarkFailed 
(this=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:41
#47 0x00000e223bedc0a5 in arrow::Future<arrow::internal::Empty>::DoMarkFinished 
(res=..., this=0xe218010a448) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:660
#48 arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, 
void> (this=0xe218010a448, s=...) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:409
#49 0x00000e223bae8492 in 
arrow::detail::MarkNextFinished<arrow::Future<arrow::internal::Empty>, 
arrow::Future<arrow::internal::Empty>, true, true>::operator()(arrow::Status 
const&) && (status=..., this=0xe218010a448) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:93
#50 
arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::detail::MarkNextFinished<arrow::Future<arrow::internal::Empty>,
 arrow::Future<arrow::internal::Empty>, true, true> 
>::operator()(arrow::FutureImpl const&) && (impl=..., this=0xe218010a448) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:455
#51 arrow::internal::FnOnce<void (arrow::FutureImpl 
const&)>::FnImpl<arrow::Future<arrow::internal::Empty>::WrapStatusyOnComplete::Callback<arrow::detail::MarkNextFinished<arrow::Future<arrow::internal::Empty>,
 arrow::Future<arrow::internal::Empty>, true, true> > 
>::invoke(arrow::FutureImpl const&) (this=0xe218010a440, a#0=...) at 
/tmp/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/functional.h:152
#52 0x00000e22399a02a0 in arrow::internal::FnOnce<void (arrow::FutureImpl 
const&)>::operator()(arrow::FutureImpl const&) && (a#0=..., this=0xe218010b230) 
at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:173
#53 arrow::ConcreteFutureImpl::RunOrScheduleCallback 
(self=std::shared_ptr<arrow::FutureImpl> (use count 2, weak count 1) = {...}, 
callback_record=..., in_add_callback=in_add_callback@entry=false) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:110
#54 0x00000e22399a05dd in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed 
(this=<optimized out>, state=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:148
#55 0x00000e223999d83a in arrow::ConcreteFutureImpl::DoMarkFailed 
(this=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:41
#56 0x00000e223bedc0a5 in arrow::Future<arrow::internal::Empty>::DoMarkFinished 
(res=..., this=0xe2199eed610) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:660
#57 arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, 
void> (this=0xe2199eed610, s=...) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:409
#58 0x00000e223a4c7a61 in 
arrow::detail::ContinueFuture::operator()<arrow::Future<>::PassthruOnFailure<arrow::fs::(anonymous
 namespace)::ObjectOutputStream::CloseAsync()::<lambda()> >, const 
arrow::Status&> (this=<synthetic pointer>, f=..., next=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:167
#59 arrow::Future<arrow::internal::Empty>::ThenOnComplete<arrow::fs::(anonymous 
namespace)::ObjectOutputStream::CloseAsync()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::fs::(anonymous 
namespace)::ObjectOutputStream::CloseAsync()::<lambda()> > >::operator() 
(result=..., this=0xe218010a038) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:550
#60 
arrow::Future<arrow::internal::Empty>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::fs::(anonymous
 namespace)::ObjectOutputStream::CloseAsync()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::fs::(anonymous 
namespace)::ObjectOutputStream::CloseAsync()::<lambda()> > > >::operator() 
(impl=..., this=0xe218010a038) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:442
#61 arrow::internal::FnOnce<void(const 
arrow::FutureImpl&)>::FnImpl<arrow::Future<>::WrapResultOnComplete::Callback<arrow::Future<>::ThenOnComplete<arrow::fs::(anonymous
 namespace)::ObjectOutputStream::CloseAsync()::<lambda()>, 
arrow::Future<>::PassthruOnFailure<arrow::fs::(anonymous 
namespace)::ObjectOutputStream::CloseAsync()::<lambda()> > > > >::invoke(const 
arrow::FutureImpl &) (this=0xe218010a030, a#0=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/functional.h:152
#62 0x00000e22399a02a0 in arrow::internal::FnOnce<void (arrow::FutureImpl 
const&)>::operator()(arrow::FutureImpl const&) && (a#0=..., this=0xe218010a810) 
at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:173
#63 arrow::ConcreteFutureImpl::RunOrScheduleCallback 
(self=std::shared_ptr<arrow::FutureImpl> (use count 2, weak count 1) = {...}, 
callback_record=..., in_add_callback=in_add_callback@entry=false) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:110
#64 0x00000e22399a05dd in arrow::ConcreteFutureImpl::DoMarkFinishedOrFailed 
(this=<optimized out>, state=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:148
#65 0x00000e223999d83a in arrow::ConcreteFutureImpl::DoMarkFailed 
(this=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.cc:41
#66 0x00000e223bedc0a5 in arrow::Future<arrow::internal::Empty>::DoMarkFinished 
(res=..., this=0xe2158016cb0) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:660
#67 arrow::Future<arrow::internal::Empty>::MarkFinished<arrow::internal::Empty, 
void> (this=0xe2158016cb0, s=...) at 
/build/build/ext/public/apache/arrow/15/0/0/dist/include/arrow/util/future.h:409
#68 0x00000e223a4ba9a3 in arrow::fs::(anonymous 
namespace)::ObjectOutputStream::HandleUploadOutcome (result=..., req=..., 
part_number=<optimized out>, state=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/filesystem/s3fs.cc:1687
#69 operator() (__closure=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/filesystem/s3fs.cc:1660
#70 0x00000e223a4babdc in 
arrow::detail::ContinueFuture::operator()<arrow::fs::(anonymous 
namespace)::ObjectOutputStream::UploadPart(void const*, int64_t, 
std::shared_ptr<arrow::Buffer>)::<lambda()>&> (this=<optimized out>, f=..., 
next=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/future.h:150
#71 std::__invoke_impl<void, arrow::detail::ContinueFuture&, 
arrow::Future<arrow::internal::Empty>&, arrow::fs::(anonymous 
namespace)::ObjectOutputStream::UploadPart(void const*, int64_t, 
std::shared_ptr<arrow::Buffer>)::<lambda()>&> (__f=...) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/invoke.h:61
#72 std::__invoke<arrow::detail::ContinueFuture&, 
arrow::Future<arrow::internal::Empty>&, arrow::fs::(anonymous 
namespace)::ObjectOutputStream::UploadPart(void const*, int64_t, 
std::shared_ptr<arrow::Buffer>)::<lambda()>&> (__fn=...) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/invoke.h:96
#73 
std::_Bind<arrow::detail::ContinueFuture(arrow::Future<arrow::internal::Empty>, 
arrow::fs::(anonymous namespace)::ObjectOutputStream::UploadPart(void const*, 
int64_t, std::shared_ptr<arrow::Buffer>)::<lambda()>)>::__call<void, 0, 1> 
(__args=..., this=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/functional:420
#74 
std::_Bind<arrow::detail::ContinueFuture(arrow::Future<arrow::internal::Empty>, 
arrow::fs::(anonymous namespace)::ObjectOutputStream::UploadPart(void const*, 
int64_t, std::shared_ptr<arrow::Buffer>)::<lambda()>)>::operator()<> 
(this=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/functional:503
#75 
arrow::internal::FnOnce<void()>::FnImpl<std::_Bind<arrow::detail::ContinueFuture(arrow::Future<arrow::internal::Empty>,
 arrow::fs::(anonymous namespace)::ObjectOutputStream::UploadPart(void const*, 
int64_t, std::shared_ptr<arrow::Buffer>)::<lambda()>)> >::invoke(void) 
(this=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/functional.h:152
#76 0x00000e22399cfbec in arrow::internal::FnOnce<void ()>::operator()() && 
(this=0xe2199eede80) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/unique_ptr.h:173
#77 arrow::internal::WorkerLoop (it={_M_id = {_M_thread = 15537479280384}}, 
state=...) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/thread_pool.cc:457
#78 operator() (__closure=<optimized out>) at 
/build/build/ext/public/apache/arrow/15/0/0/apache-arrow/cpp/src/arrow/util/thread_pool.cc:618
#79 std::__invoke_impl<void, 
arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()> > (__f=...) 
at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/invoke.h:61
#80 
std::__invoke<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()>
 > (__fn=...) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/invoke.h:96
#81 
std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()>
 > >::_M_invoke<0> (this=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/std_thread.h:253
#82 
std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()>
 > >::operator() (this=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/std_thread.h:260
#83 
std::thread::_State_impl<std::thread::_Invoker<std::tuple<arrow::internal::ThreadPool::LaunchWorkersUnlocked(int)::<lambda()>
 > > >::_M_run(void) (this=<optimized out>) at 
/build/build/ext/public/gpl3/gnu/gcc/11/dist/include/c++/11.3.0/bits/std_thread.h:211
#84 0x00000e2238ee74c4 in std::execute_native_thread_routine 
(__p=0x5b665d38c7b0) at 
/build/build/ext/public/gpl3/gnu/gcc/11/build/extract/gcc-11.3.0/libstdc++-v3/src/c++11/thread.cc:82
#85 0x00000e223fe11ea7 in start_thread (arg=<optimized out>) at 
pthread_create.c:477
#86 0x00000e223ff27a6f in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Reply via email to