Skip to content

//test/cpp/end2end:client_callback_end2end_test broken on MSAN #17375

@jtattermusch

Description

@jtattermusch

Broken in 100% of cases for last few days.

https://source.cloud.google.com/results/invocations/37b993cb-e061-4b63-bb7d-43ba211f0138/targets/%2F%2Ftest%2Fcpp%2Fend2end:client_callback_end2end_test@poller%3Depoll1/log

==19==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x7fbd5d6f2d94 in grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall() /proc/self/cwd/include/grpcpp/impl/codegen/client_callback.h:318:9
    #1 0x7663d6 in grpc::experimental::ClientBidiReactor<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall() /proc/self/cwd/external/com_github_grpc_grpc/include/grpcpp/impl/codegen/client_callback.h:166:31
    #2 0x5688e2 in grpc::testing::(anonymous namespace)::ClientCallbackEnd2endTest::SendGenericEchoAsBidi(int)::Client::Client(grpc::testing::(anonymous namespace)::ClientCallbackEnd2endTest*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /proc/self/cwd/test/cpp/end2end/client_callback_end2end_test.cc:201:11
    #3 0x563a2b in grpc::testing::(anonymous namespace)::ClientCallbackEnd2endTest::SendGenericEchoAsBidi(int) /proc/self/cwd/test/cpp/end2end/client_callback_end2end_test.cc:229:9
    #4 0x5625ee in grpc::testing::(anonymous namespace)::ClientCallbackEnd2endTest_SequentialGenericRpcsAsBidi_Test::TestBody() /proc/self/cwd/test/cpp/end2end/client_callback_end2end_test.cc:265:3
    #5 0xf0cdd8 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2402:10
    #6 0xd376d7 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2438:14
    #7 0xa9fb66 in testing::Test::Run() /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2474:5
    #8 0xaad90b in testing::TestInfo::Run() /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2656:11
    #9 0xac3ac4 in testing::TestCase::Run() /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2774:28
    #10 0xb75ce1 in testing::internal::UnitTestImpl::RunAllTests() /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:4649:43
    #11 0xf571b3 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2402:10
    #12 0xd5841f in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:2438:14
    #13 0xb725b8 in testing::UnitTest::Run() /proc/self/cwd/external/com_github_google_googletest/googletest/src/gtest.cc:4257:10
    #14 0x6205a5 in RUN_ALL_TESTS() /proc/self/cwd/external/com_github_google_googletest/googletest/include/gtest/gtest.h:2233:46
    #15 0x4e9a3f in main /proc/self/cwd/test/cpp/end2end/client_callback_end2end_test.cc:500:10
    #16 0x7fbd545b182f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #17 0x463978 in _start (/b/f/w/bazel-out/k8-fastbuild/bin/test/cpp/end2end/client_callback_end2end_test@poller=epoll1.runfiles/com_github_grpc_grpc/test/cpp/end2end/client_callback_end2end_test+0x463978)
  Memory was marked as uninitialized
    #0 0x48ee1f in __sanitizer_dtor_callback /tmp/clang-build/src/compiler-rt/lib/msan/msan_interceptors.cc:931:3
    #1 0x7fbd5d6f1380 in grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::~ClientCallbackReaderWriterImpl() /proc/self/cwd/include/grpcpp/impl/codegen/client_callback.h:240:7
    #2 0x7fbd5d722a88 in grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::MaybeFinish() /proc/self/cwd/include/grpcpp/impl/codegen/client_callback.h:260:14
    #3 0x7fbd5d750b29 in grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()::'lambda2'(bool)::operator()(bool) const /proc/self/cwd/include/grpcpp/impl/codegen/client_callback.h:308:53
    #4 0x7fbd5d7508b5 in __invoke<(lambda at include/grpcpp/impl/codegen/client_callback.h:308:35) &, bool> /usr/local/bin/../include/c++/v1/type_traits:4356:1
    #5 0x7fbd5d7508b5 in void std::__1::__invoke_void_return_wrapper<void>::__call<grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()::'lambda2'(bool)&, bool>(grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()::'lambda2'(bool)&, bool&&) /usr/local/bin/../include/c++/v1/__functional_base:349
    #6 0x7fbd5d74f670 in std::__1::__function::__func<grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()::'lambda2'(bool), std::__1::allocator<grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()::'lambda2'(bool)>, void (bool)>::operator()(bool&&) /usr/local/bin/../include/c++/v1/functional:1563:12
    #7 0x6c2a7f in std::__1::function<void (bool)>::operator()(bool) const /usr/local/bin/../include/c++/v1/functional:1914:12
    #8 0x6c23e1 in void grpc::internal::CatchingCallback<std::__1::function<void (bool)>&, bool&>(std::__1::function<void (bool)>&, bool&) /proc/self/cwd/external/com_github_grpc_grpc/include/grpcpp/impl/codegen/callback_common.h:39:5
    #9 0x6c1f2f in grpc::internal::CallbackWithSuccessTag::Run(bool) /proc/self/cwd/external/com_github_grpc_grpc/include/grpcpp/impl/codegen/callback_common.h:192:7
    #10 0x6c1522 in grpc::internal::CallbackWithSuccessTag::StaticRun(grpc_experimental_completion_queue_functor*, int) /proc/self/cwd/external/com_github_grpc_grpc/include/grpcpp/impl/codegen/callback_common.h:182:47
    #11 0x7fbd5b11029c in cq_end_op_for_callback(grpc_completion_queue*, void*, grpc_error*, void (*)(void*, grpc_cq_completion*), void*, grpc_cq_completion*) /proc/self/cwd/src/core/lib/surface/completion_queue.cc:871:3
    #12 0x7fbd5b0fbf06 in grpc_cq_end_op(grpc_completion_queue*, void*, grpc_error*, void (*)(void*, grpc_cq_completion*), void*, grpc_cq_completion*) /proc/self/cwd/src/core/lib/surface/completion_queue.cc:877:3
    #13 0x7fbd5b0c690e in post_batch_completion(batch_control*) /proc/self/cwd/src/core/lib/surface/call.cc:1209:5
    #14 0x7fbd5b0b9e89 in finish_batch_step(batch_control*) /proc/self/cwd/src/core/lib/surface/call.cc:1217:5
    #15 0x7fbd5b0b39ef in receiving_trailing_metadata_ready(void*, grpc_error*) /proc/self/cwd/src/core/lib/surface/call.cc:1472:3
    #16 0x7fbd5af219d8 in exec_ctx_run(grpc_closure*, grpc_error*) /proc/self/cwd/src/core/lib/iomgr/exec_ctx.cc:40:3
    #17 0x7fbd5d3b71a8 in grpc_closure_run(char const*, int, grpc_closure*, grpc_error*) /proc/self/cwd/./src/core/lib/iomgr/closure.h:259:5
    #18 0x7fbd5d3a2092 in recv_trailing_metadata_ready(void*, grpc_error*) /proc/self/cwd/src/core/ext/filters/message_size/message_size_filter.cc:221:3
    #19 0x7fbd5af219d8 in exec_ctx_run(grpc_closure*, grpc_error*) /proc/self/cwd/src/core/lib/iomgr/exec_ctx.cc:40:3
    #20 0x7fbd5d3b71a8 in grpc_closure_run(char const*, int, grpc_closure*, grpc_error*) /proc/self/cwd/./src/core/lib/iomgr/closure.h:259:5
SUMMARY: MemorySanitizer: use-of-uninitialized-value /proc/self/cwd/include/grpcpp/impl/codegen/client_callback.h:318:9 in grpc::internal::ClientCallbackReaderWriterImpl<grpc::ByteBuffer, grpc::ByteBuffer>::StartCall()

seems to be introduced in #17104

(not sure why the MSAN suite didn't run on the pull request, maybe we haven't enabled it on PRs yet).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions