TSAN warnings in the C++ examples

84 views
Skip to first unread message

Hung Dang

unread,
Dec 30, 2020, 4:00:43 PM12/30/20
to grp...@googlegroups.com
Hi,

I got TSAN warnings when testing the hello world example in examples/cpp/helloworld/ (see detail warnings below). I also get similar TSAN warnings in other examples. Is it a known issue with gRPC?

Thanks,
Hung

greeter_client.cc 

~/working/grpc-cmake-template $ ./client/greeter_client
==================
WARNING: ThreadSanitizer: data race (pid=35434)
  Read of size 8 at 0x7f7f6c1ec6c0 by main thread:
    #0 memmove <null> (libtsan.so.0+0x42c9b)
    #1 absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node** std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node*>(absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node* const*, absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node* const*, absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node**) <null> (greeter_client+0x6ee12b)
    #2 grpc_core::WorkSerializer::WorkSerializerImpl::Run(std::function<void ()>, grpc_core::DebugLocation const&) <null> (greeter_client+0x2ad92b)
    #3 grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata, grpc::internal::CallOpSendMessage, grpc::internal::CallOpRecvInitialMetadata, grpc::internal::CallOpRecvMessage<google::protobuf::MessageLite>, grpc::internal::CallOpClientSendClose, grpc::internal::CallOpClientRecvStatus>::FillOps(grpc::internal::Call*) /home/hungptit/working/grpc-cmake-template/3p/include/grpcpp/impl/codegen/call_op_set.h:896 (greeter_client+0x7e068)
    #4 grpc::Channel::PerformOpsOnCall(grpc::internal::CallOpSetInterface*, grpc::internal::Call*) <null> (greeter_client+0x8c86d)
    #5 grpc::internal::BlockingUnaryCallImpl<google::protobuf::MessageLite, google::protobuf::MessageLite>::BlockingUnaryCallImpl(grpc::ChannelInterface*, grpc::internal::RpcMethod const&, grpc::ClientContext*, google::protobuf::MessageLite const&, google::protobuf::MessageLite*) /home/hungptit/working/grpc-cmake-template/3p/include/grpcpp/impl/codegen/client_unary_call.h:80 (greeter_client+0x74453)
    #6 grpc::Status grpc::internal::BlockingUnaryCall<helloworld::HelloRequest, helloworld::HelloReply, google::protobuf::MessageLite, google::protobuf::MessageLite>(grpc::ChannelInterface*, grpc::internal::RpcMethod const&, grpc::ClientContext*, helloworld::HelloRequest const&, helloworld::HelloReply*) /home/hungptit/working/grpc-cmake-template/3p/include/grpcpp/impl/codegen/client_unary_call.h:50 (greeter_client+0x722ee)
    #7 helloworld::Greeter::Stub::SayHello(grpc::ClientContext*, helloworld::HelloRequest const&, helloworld::HelloReply*) /home/hungptit/working/grpc-cmake-template/proto/helloworld.grpc.pb.cc:39 (greeter_client+0x63e56)
    #8 GreeterClient::SayHello(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) <null> (greeter_client+0x5da52)
    #9 main /home/hungptit/working/grpc-cmake-template/client/greeter_client.cpp:103 (greeter_client+0x5cc55)

  Previous write of size 8 at 0x7f7f6c1ec6c0 by thread T3:
    #0 memmove <null> (libtsan.so.0+0x42c9b)
    #1 absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node** std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node*>(absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node* const*, absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node* const*, absl::lts_2020_09_23::synchronization_internal::(anonymous namespace)::Node**) <null> (greeter_client+0x6ee12b)

  Thread T3 'grpc_global_tim' (tid=35438, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_client+0x6be24a)
    #2 grpc::ChannelCredentials::ChannelCredentials() <null> (greeter_client+0x8ef60)
    #3 __libc_start_main <null> (libc.so.6+0x23e39)

SUMMARY: ThreadSanitizer: data race (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libtsan.so.0+0x42c9b) in memmove
==================
Greeter received: Hello world
ThreadSanitizer: reported 1 warnings

greeter_server.cc

==================
WARNING: ThreadSanitizer: data race (pid=35355)
  Read of size 8 at 0x7b8800003218 by thread T6:
    #0 unsigned long const& std::min<unsigned long>(unsigned long const&, unsigned long const&) /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/stl_algobase.h:235 (greeter_server+0x6857c)
    #1 tcp_do_read((anonymous namespace)::grpc_tcp*) <null> (greeter_server+0x317410)

  Previous write of size 8 at 0x7b8800003218 by thread T5:
    #0 operator new(unsigned long) <null> (libtsan.so.0+0x8bdbe)
    #1 grpc_create_chttp2_transport(grpc_channel_args const*, grpc_endpoint*, bool, grpc_resource_user*) <null> (greeter_server+0x4239da)

  Location is heap block of size 5648 at 0x7b8800003000 allocated by thread T5:
    #0 operator new(unsigned long) <null> (libtsan.so.0+0x8bdbe)
    #1 grpc_create_chttp2_transport(grpc_channel_args const*, grpc_endpoint*, bool, grpc_resource_user*) <null> (greeter_server+0x4239da)

  Thread T6 'grpcpp_sync_ser' (tid=35439, running) created by thread T5 at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)

  Thread T5 'grpcpp_sync_ser' (tid=35361, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)
    #2 main /home/hungptit/working/grpc-cmake-template/server/greeter_server.cpp:69 (greeter_server+0x65c05)

SUMMARY: ThreadSanitizer: data race /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/g++-v10/bits/stl_algobase.h:235 in unsigned long const& std::min<unsigned long>(unsigned long const&, unsigned long const&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=35355)
  Write of size 1 at 0x7b940000009a by thread T6:
    #0 recvmsg <null> (libtsan.so.0+0x5907a)
    #1 tcp_do_read((anonymous namespace)::grpc_tcp*) <null> (greeter_server+0x31767c)

  Previous write of size 8 at 0x7b9400000098 by thread T5:
    #0 malloc <null> (libtsan.so.0+0x3047f)
    #1 gpr_malloc <null> (greeter_server+0x71a5ab)

  Location is heap block of size 8264 at 0x7b9400000000 allocated by thread T5:
    #0 malloc <null> (libtsan.so.0+0x3047f)
    #1 gpr_malloc <null> (greeter_server+0x71a5ab)

  Thread T6 'grpcpp_sync_ser' (tid=35439, running) created by thread T5 at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)

  Thread T5 'grpcpp_sync_ser' (tid=35361, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)
    #2 main /home/hungptit/working/grpc-cmake-template/server/greeter_server.cpp:69 (greeter_server+0x65c05)

SUMMARY: ThreadSanitizer: data race (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libtsan.so.0+0x5907a) in __interceptor_recvmsg
==================
==================
WARNING: ThreadSanitizer: data race (pid=35355)
  Write of size 8 at 0x7b8800004120 by thread T6:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_chttp2_settings_parser_begin_frame(grpc_chttp2_settings_parser*, unsigned int, unsigned char, unsigned int*) <null> (greeter_server+0x4ee4d7)

  Previous write of size 8 at 0x7b8800004120 by thread T5:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_chttp2_settings_parser_begin_frame(grpc_chttp2_settings_parser*, unsigned int, unsigned char, unsigned int*) <null> (greeter_server+0x4ee4d7)

  Location is heap block of size 5648 at 0x7b8800003000 allocated by thread T5:
    #0 operator new(unsigned long) <null> (libtsan.so.0+0x8bdbe)
    #1 grpc_create_chttp2_transport(grpc_channel_args const*, grpc_endpoint*, bool, grpc_resource_user*) <null> (greeter_server+0x4239da)

  Thread T6 'grpcpp_sync_ser' (tid=35439, running) created by thread T5 at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)

  Thread T5 'grpcpp_sync_ser' (tid=35361, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)
    #2 main /home/hungptit/working/grpc-cmake-template/server/greeter_server.cpp:69 (greeter_server+0x65c05)

SUMMARY: ThreadSanitizer: data race (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libtsan.so.0+0x4257b) in __interceptor_memcpy
==================
==================
WARNING: ThreadSanitizer: data race (pid=35355)
  Write of size 1 at 0x7b880000413a by thread T6:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_chttp2_settings_parser_begin_frame(grpc_chttp2_settings_parser*, unsigned int, unsigned char, unsigned int*) <null> (greeter_server+0x4ee4d7)

  Previous read of size 1 at 0x7b880000413a by thread T5:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_chttp2_settings_parser_parse(void*, grpc_chttp2_transport*, grpc_chttp2_stream*, grpc_slice const&, int) <null> (greeter_server+0x4ee768)

  Location is heap block of size 5648 at 0x7b8800003000 allocated by thread T5:
    #0 operator new(unsigned long) <null> (libtsan.so.0+0x8bdbe)
    #1 grpc_create_chttp2_transport(grpc_channel_args const*, grpc_endpoint*, bool, grpc_resource_user*) <null> (greeter_server+0x4239da)

  Thread T6 'grpcpp_sync_ser' (tid=35439, running) created by thread T5 at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)

  Thread T5 'grpcpp_sync_ser' (tid=35361, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)
    #2 main /home/hungptit/working/grpc-cmake-template/server/greeter_server.cpp:69 (greeter_server+0x65c05)

SUMMARY: ThreadSanitizer: data race (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libtsan.so.0+0x4257b) in __interceptor_memcpy
==================
==================
WARNING: ThreadSanitizer: data race (pid=35355)
  Write of size 8 at 0x7b8800003230 by thread T6:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_slice_buffer_swap <null> (greeter_server+0x32d9a8)

  Previous write of size 8 at 0x7b8800003230 by thread T5:
    #0 memcpy <null> (libtsan.so.0+0x4257b)
    #1 grpc_slice_buffer_swap <null> (greeter_server+0x32d9a8)

  Location is heap block of size 5648 at 0x7b8800003000 allocated by thread T5:
    #0 operator new(unsigned long) <null> (libtsan.so.0+0x8bdbe)
    #1 grpc_create_chttp2_transport(grpc_channel_args const*, grpc_endpoint*, bool, grpc_resource_user*) <null> (greeter_server+0x4239da)

  Thread T6 'grpcpp_sync_ser' (tid=35439, running) created by thread T5 at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)

  Thread T5 'grpcpp_sync_ser' (tid=35361, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5edc5)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) <null> (greeter_server+0x72088a)
    #2 main /home/hungptit/working/grpc-cmake-template/server/greeter_server.cpp:69 (greeter_server+0x65c05)

SUMMARY: ThreadSanitizer: data race (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libtsan.so.0+0x4257b) in __interceptor_memcpy
==================
Reply all
Reply to author
Forward
0 new messages