Skip to content

tsan flake: bins/tsan/h2_http_proxy_test retry_too_many_attempts #16352

@jtattermusch

Description

@jtattermusch

https://source.cloud.google.com/results/invocations/2d69b726-f79c-4e64-90e0-f8b3d835c13e/targets/github%2Fgrpc%2Fc_linux_tsan_native_x64_clang7.0/tests

WARNING: ThreadSanitizer: data race (pid=14950)
  Write of size 2 at 0x7ba400003168 by thread T3:
    #0 on_complete(void*, grpc_error*) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:2090:50 (h2_http_proxy_test+0x629452)
    #1 exec_ctx_run(grpc_closure*, grpc_error*) /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:40:3 (h2_http_proxy_test+0x5c2679)
    #2 grpc_core::ExecCtx::Flush() /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:128:9 (h2_http_proxy_test+0x5c2403)
    #3 run_some_timers() /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:121:30 (h2_http_proxy_test+0x5e2be7)
    #4 timer_main_loop() /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:222:9 (h2_http_proxy_test+0x5e28f3)
    #5 timer_thread(void*) /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:269:3 (h2_http_proxy_test+0x5e2844)
    #6 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*)::{lambda(void*)#1}::operator()(void*) const /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:100:27 (h2_http_proxy_test+0x6dedec)
    #7 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*)::{lambda(void*)#1}::__invoke(void*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:74:25 (h2_http_proxy_test+0x6dec88)
  Previous write of size 2 at 0x7ba400003168 by main thread:
    #0 do_retry(grpc_call_element*, subchannel_call_retry_state*, long) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:1422:61 (h2_http_proxy_test+0x62dd18)
    #1 maybe_retry(grpc_call_element*, subchannel_batch_data*, grpc_status_code, grpc_mdelem*) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:1532:3 (h2_http_proxy_test+0x62d565)
    #2 recv_trailing_metadata_ready(void*, grpc_error*) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:1977:7 (h2_http_proxy_test+0x62ca0d)
    #3 exec_ctx_run(grpc_closure*, grpc_error*) /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:40:3 (h2_http_proxy_test+0x5c2679)
    #4 grpc_closure_run(char const*, int, grpc_closure*, grpc_error*) /var/local/git/grpc/./src/core/lib/iomgr/closure.h:258:5 (h2_http_proxy_test+0x52d1bd)
    #5 recv_trailing_metadata_ready(void*, grpc_error*) /var/local/git/grpc/src/core/ext/filters/http/client/http_client_filter.cc:165:3 (h2_http_proxy_test+0x77b873)
    #6 exec_ctx_run(grpc_closure*, grpc_error*) /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:40:3 (h2_http_proxy_test+0x5c2679)
    #7 grpc_core::ExecCtx::Flush() /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:128:9 (h2_http_proxy_test+0x5c2403)
    #8 end_worker(grpc_pollset*, grpc_pollset_worker*, grpc_pollset_worker**) /var/local/git/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc:922:34 (h2_http_proxy_test+0x6aa73f)
    #9 pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc:991:3 (h2_http_proxy_test+0x6a6b4b)
    #10 pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/ev_posix.cc:270:21 (h2_http_proxy_test+0x6580f4)
    #11 grpc_pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/pollset.cc:48:10 (h2_http_proxy_test+0x5c6a14)
    #12 cq_next(grpc_completion_queue*, gpr_timespec, void*) /var/local/git/grpc/src/core/lib/surface/completion_queue.cc:927:23 (h2_http_proxy_test+0x60687e)
    #13 retry_too_many_attempts(grpc_end2end_test_config) /var/local/git/grpc/test/core/end2end/tests/retry_too_many_attempts.cc:292:3 (h2_http_proxy_test+0x57cf36)
    #14 grpc_end2end_tests(int, char**, grpc_end2end_test_config) /var/local/git/grpc/test/core/end2end/end2end_tests.cc:612:7 (h2_http_proxy_test+0x50589b)
    #15 main /var/local/git/grpc/test/core/end2end/fixtures/h2_http_proxy.cc:128:5 (h2_http_proxy_test+0x4ffbb5)
  Location is heap block of size 20135 at 0x7ba400000000 allocated by thread T4:
    #0 malloc /tmp/clang-build/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:666:5 (h2_http_proxy_test+0x496287)
    #1 gpr_malloc /var/local/git/grpc/src/core/lib/gpr/alloc.cc:57:7 (h2_http_proxy_test+0x6d5c48)
    #2 gpr_malloc_aligned /var/local/git/grpc/src/core/lib/gpr/alloc.cc:93:13 (h2_http_proxy_test+0x6d5eaf)
    #3 zalloc_aligned(unsigned long) /var/local/git/grpc/src/core/lib/gpr/arena.cc:94:15 (h2_http_proxy_test+0x6d60af)
    #4 gpr_arena_alloc(gpr_arena*, unsigned long) /var/local/git/grpc/src/core/lib/gpr/arena.cc:148:38 (h2_http_proxy_test+0x6d633b)
    #5 grpc_core::ConnectedSubchannel::CreateCall(grpc_core::ConnectedSubchannel::CallArgs const&, grpc_subchannel_call**) /var/local/git/grpc/src/core/ext/filters/client_channel/subchannel.cc:836:7 (h2_http_proxy_test+0x647d41)
    #6 create_subchannel_call(grpc_call_element*, grpc_error*) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:2594:61 (h2_http_proxy_test+0x62f91c)
    #7 pick_done(void*, grpc_error*) /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:2646:5 (h2_http_proxy_test+0x62f6cc)
    #8 exec_ctx_run(grpc_closure*, grpc_error*) /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:40:3 (h2_http_proxy_test+0x5c2679)
    #9 grpc_core::ExecCtx::Flush() /var/local/git/grpc/src/core/lib/iomgr/exec_ctx.cc:128:9 (h2_http_proxy_test+0x5c2403)
    #10 end_worker(grpc_pollset*, grpc_pollset_worker*, grpc_pollset_worker**) /var/local/git/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc:922:34 (h2_http_proxy_test+0x6aa73f)
    #11 pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc:991:3 (h2_http_proxy_test+0x6a6b4b)
    #12 pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/ev_posix.cc:270:21 (h2_http_proxy_test+0x6580f4)
    #13 grpc_pollset_work(grpc_pollset*, grpc_pollset_worker**, long) /var/local/git/grpc/src/core/lib/iomgr/pollset.cc:48:10 (h2_http_proxy_test+0x5c6a14)
    #14 thread_main(void*) /var/local/git/grpc/test/core/end2end/fixtures/http_proxy_fixture.cc:510:5 (h2_http_proxy_test+0x5a114b)
    #15 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*)::{lambda(void*)#1}::operator()(void*) const /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:100:27 (h2_http_proxy_test+0x6dedec)
    #16 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*)::{lambda(void*)#1}::__invoke(void*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:74:25 (h2_http_proxy_test+0x6dec88)
  Thread T3 'grpc_global_tim' (tid=14964, running) created by main thread at:
    #0 pthread_create /tmp/clang-build/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:992:3 (h2_http_proxy_test+0x497d55)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:73:10 (h2_http_proxy_test+0x6de996)
    #2 grpc_core::(anonymous namespace)::ThreadInternalsPosix* grpc_core::New<grpc_core::(anonymous namespace)::ThreadInternalsPosix, char const*&, void (*&)(void*), void*&, bool*>(char const*&, void (*&)(void*), void*&, bool*&&) /var/local/git/grpc/./src/core/lib/gprpp/memory.h:52:18 (h2_http_proxy_test+0x6de653)
    #3 grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:142:7 (h2_http_proxy_test+0x6de474)
    #4 start_timer_thread_and_unlock() /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:89:13 (h2_http_proxy_test+0x5e27e0)
    #5 start_threads() /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:278:5 (h2_http_proxy_test+0x5e2399)
    #6 grpc_timer_manager_init() /var/local/git/grpc/src/core/lib/iomgr/timer_manager.cc:296:3 (h2_http_proxy_test+0x5e233b)
    #7 grpc_iomgr_start() /var/local/git/grpc/src/core/lib/iomgr/iomgr.cc:62:27 (h2_http_proxy_test+0x5c5491)
    #8 grpc_init /var/local/git/grpc/src/core/lib/surface/init.cc:145:5 (h2_http_proxy_test+0x6ce4b6)
    #9 main /var/local/git/grpc/test/core/end2end/fixtures/h2_http_proxy.cc:125:3 (h2_http_proxy_test+0x4ffb38)
  Thread T4 'grpc_http_proxy' (tid=14974, running) created by main thread at:
    #0 pthread_create /tmp/clang-build/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:992:3 (h2_http_proxy_test+0x497d55)
    #1 grpc_core::(anonymous namespace)::ThreadInternalsPosix::ThreadInternalsPosix(char const*, void (*)(void*), void*, bool*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:73:10 (h2_http_proxy_test+0x6de996)
    #2 grpc_core::(anonymous namespace)::ThreadInternalsPosix* grpc_core::New<grpc_core::(anonymous namespace)::ThreadInternalsPosix, char const*&, void (*&)(void*), void*&, bool*>(char const*&, void (*&)(void*), void*&, bool*&&) /var/local/git/grpc/./src/core/lib/gprpp/memory.h:52:18 (h2_http_proxy_test+0x6de653)
    #3 grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*) /var/local/git/grpc/src/core/lib/gprpp/thd_posix.cc:142:7 (h2_http_proxy_test+0x6de474)
    #4 grpc_end2end_http_proxy_create(grpc_channel_args*) /var/local/git/grpc/test/core/end2end/fixtures/http_proxy_fixture.cc:553:16 (h2_http_proxy_test+0x5a0729)
    #5 chttp2_create_fixture_fullstack(grpc_channel_args*, grpc_channel_args*) /var/local/git/grpc/test/core/end2end/fixtures/h2_http_proxy.cc:56:16 (h2_http_proxy_test+0x4ffc68)
    #6 begin_test(grpc_end2end_test_config, char const*, grpc_channel_args*, grpc_channel_args*) /var/local/git/grpc/test/core/end2end/tests/retry_too_many_attempts.cc:48:7 (h2_http_proxy_test+0x57e7a2)
    #7 test_retry_too_many_attempts(grpc_end2end_test_config) /var/local/git/grpc/test/core/end2end/tests/retry_too_many_attempts.cc:143:7 (h2_http_proxy_test+0x57d106)
    #8 retry_too_many_attempts(grpc_end2end_test_config) /var/local/git/grpc/test/core/end2end/tests/retry_too_many_attempts.cc:292:3 (h2_http_proxy_test+0x57cf36)
    #9 grpc_end2end_tests(int, char**, grpc_end2end_test_config) /var/local/git/grpc/test/core/end2end/end2end_tests.cc:612:7 (h2_http_proxy_test+0x50589b)
    #10 main /var/local/git/grpc/test/core/end2end/fixtures/h2_http_proxy.cc:128:5 (h2_http_proxy_test+0x4ffbb5)
SUMMARY: ThreadSanitizer: data race /var/local/git/grpc/src/core/ext/filters/client_channel/client_channel.cc:2090:50 in on_complete(void*, grpc_error*)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions