Describe the bug, including details regarding any error messages, version, and platform.
I meet a SIGSEGV crashes in the Arrow Flight C++ client when a Flight stream is being finalized after an error or remote-side termination.
The most common failing frames like:
*** SIGSEGV invalid permissions for mapped object (@0x56448ff1ef38) received by PID 66637 (TID 67372 OR 0x7f2687017640) from PID 18446744071829581624; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at ../src/common/signal_handler.h:417
1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in /usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
2# JVM_handle_linux_signal in /usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
3# 0x00007F2836CE7520 in /lib/x86_64-linux-gnu/libc.so.6
4# std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> >(char const*, std::allocator<char> const&) at /usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/basic_string.h:707
5# arrow::Status::WithDetail(std::shared_ptr<arrow::StatusDetail>) const in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
6# arrow::flight::internal::TransportStatus::ToStatus() const in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
7# arrow::flight::transport::grpc::FromGrpcStatus(grpc::Status const&, grpc::ClientContext*) in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
8# arrow::flight::transport::grpc::(anonymous namespace)::GrpcClientInterceptorAdapter::Intercept(grpc::experimental::InterceptorBatchMethods*) in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
9# grpc::internal::InterceptorBatchMethodsImpl::RunInterceptors() in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
10# grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata, grpc::internal::CallOpClientRecvStatus, grpc::internal::CallNoOp<3>, grpc::internal::CallNoOp<4>, grpc::internal::CallNoOp<5>, grpc::internal::CallNoOp<6> >::FinalizeResult(void**, bool*) in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
11# grpc::ClientReaderWriter<arrow::flight::protocol::FlightData, arrow::flight::protocol::FlightData>::Finish() in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
12# arrow::flight::transport::grpc::(anonymous namespace)::FinishableDataStream<grpc::ClientReaderWriter<arrow::flight::protocol::FlightData, arrow::flight::protocol::FlightData>, arrow::flight::internal::FlightData>::DoFinish() in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
13# arrow::flight::transport::grpc::(anonymous namespace)::WritableDataStream<grpc::ClientReaderWriter<arrow::flight::protocol::FlightData, arrow::flight::protocol::FlightData>, arrow::flight::internal::FlightData>::DoFinish() in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
14# arrow::flight::internal::ClientDataStream::Finish(arrow::Status) in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
15# arrow::flight::ClientStreamReader::Next() in /mnt/disk1/PERFORMANCE_ENV/be/lib/doris_be
In my previous practice, the Arrow built with GCC did not exhibit this crash, while the Arrow built with Clang more reliably exposed the issue.
Is there any known issue in Arrow Flight 17.0.0 around gRPC status conversion, status detail attachment, or stream finalization, especially for statically linked Clang-built Linux environments?
Environment
- Arrow version:
17.0.0
- gRPC version:
1.54.3
- Compiler used to build Arrow:
Clang 20.1.8
- Build type:
RELEASE
- Build mode: static libraries
- Relevant Arrow components enabled:
ARROW_FLIGHT=ON
ARROW_FLIGHT_SQL=ON
ARROW_DATASET=ON
ARROW_PARQUET=ON
ARROW_ORC=ON
- Link flags include:
-static-libstdc++
-static-libgcc
Component(s)
C++
Describe the bug, including details regarding any error messages, version, and platform.
I meet a SIGSEGV crashes in the Arrow Flight C++ client when a Flight stream is being finalized after an error or remote-side termination.
The most common failing frames like:
In my previous practice, the Arrow built with GCC did not exhibit this crash, while the Arrow built with Clang more reliably exposed the issue.
Is there any known issue in Arrow Flight 17.0.0 around gRPC status conversion, status detail attachment, or stream finalization, especially for statically linked Clang-built Linux environments?
Environment
17.0.01.54.3Clang 20.1.8RELEASEARROW_FLIGHT=ONARROW_FLIGHT_SQL=ONARROW_DATASET=ONARROW_PARQUET=ONARROW_ORC=ON-static-libstdc++-static-libgccComponent(s)
C++