linrrzqqq opened a new issue, #49781:
URL: https://github.com/apache/arrow/issues/49781

   ### 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:
   ```text
   *** 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++


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to