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
==================

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CAJkfh3pOPaQQ9u-ONZA2merm4-9nyvn_6y20gnMrr%2B%3DmYTuqpA%40mail.gmail.com.

Reply via email to