linux chromium tsan failing some ProxyResolverV8Tracing* tests |
||||||
Issue descriptionsee https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_tsan_rel_ng/builds/28639 ProxyResolverV8TracingTest.CancelWhileBlockedInNonBlockingDns2 ProxyResolverV8TracingWrapperTest.CancelWhileBlockedInNonBlockingDns2 =============== ProxyResolverV8TracingTest.CancelWhileBlockedInNonBlockingDns2 (run #1): [ RUN ] ProxyResolverV8TracingTest.CancelWhileBlockedInNonBlockingDns2 ================== WARNING: ThreadSanitizer: data race (pid=18715) Write of size 8 at 0x7b5400001338 by main thread: #0 reset buildtools/third_party/libc++/trunk/include/memory:2733:24 (net_unittests+0x3ac9852) #1 net::(anonymous namespace)::Job::Cancel() net/proxy/proxy_resolver_v8_tracing.cc:412 (net_unittests+0x3ac9852) #2 net::(anonymous namespace)::ProxyResolverV8TracingImpl::RequestImpl::~RequestImpl() net/proxy/proxy_resolver_v8_tracing.cc:957:9 (net_unittests+0x3ace3eb) #3 net::(anonymous namespace)::ProxyResolverV8TracingImpl::RequestImpl::~RequestImpl() net/proxy/proxy_resolver_v8_tracing.cc:956:57 (net_unittests+0x3ace469) #4 operator() buildtools/third_party/libc++/trunk/include/memory:2529:13 (net_unittests+0x148c79c) #5 reset buildtools/third_party/libc++/trunk/include/memory:2735 (net_unittests+0x148c79c) #6 net::(anonymous namespace)::ProxyResolverV8TracingTest_CancelWhileBlockedInNonBlockingDns2_Test::TestBody() net/proxy/proxy_resolver_v8_tracing_unittest.cc:857 (net_unittests+0x148c79c) #7 HandleExceptionsInMethodIfSupported<testing::Test, void> testing/gtest/src/gtest.cc:2458:12 (net_unittests+0x3a4ecfd) #8 testing::Test::Run() testing/gtest/src/gtest.cc:2474 (net_unittests+0x3a4ecfd) #9 testing::TestInfo::Run() testing/gtest/src/gtest.cc:2656:11 (net_unittests+0x3a4faad) #10 testing::TestCase::Run() testing/gtest/src/gtest.cc:2774:28 (net_unittests+0x3a501f6) #11 testing::internal::UnitTestImpl::RunAllTests() testing/gtest/src/gtest.cc:4647:43 (net_unittests+0x3a5ae86) #12 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> testing/gtest/src/gtest.cc:2458:12 (net_unittests+0x3a5a7b2) #13 testing::UnitTest::Run() testing/gtest/src/gtest.cc:4255 (net_unittests+0x3a5a7b2) #14 RUN_ALL_TESTS testing/gtest/include/gtest/gtest.h:2237:46 (net_unittests+0x3dfb567) #15 base::TestSuite::Run() base/test/test_suite.cc:271 (net_unittests+0x3dfb567) #16 Invoke<NetTestSuite *> base/bind_internal.h:214:12 (net_unittests+0x218a145) #17 MakeItSo<int (base::TestSuite::*const &)(), NetTestSuite *> base/bind_internal.h:285 (net_unittests+0x218a145) #18 RunImpl<int (base::TestSuite::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<NetTestSuite> > &, 0> base/bind_internal.h:361 (net_unittests+0x218a145) #19 base::internal::Invoker<base::internal::BindState<int (base::TestSuite::*)(), base::internal::UnretainedWrapper<NetTestSuite> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:339 (net_unittests+0x218a145) #20 Run base/callback.h:85:12 (net_unittests+0x3dfcdd3) #21 base::(anonymous namespace)::LaunchUnitTestsInternal(base::Callback<int (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, int, int, bool, base::Callback<void (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) base/test/launcher/unit_test_launcher.cc:211 (net_unittests+0x3dfcdd3) #22 base::LaunchUnitTests(int, char**, base::Callback<int (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) base/test/launcher/unit_test_launcher.cc:453:10 (net_unittests+0x3dfcbfa) #23 main net/test/run_all_unittests.cc:88:10 (net_unittests+0x218a0a2) ==================
,
Mar 8 2017
Can you explain why you think they need to be suppressed instead of fixed?
,
Mar 8 2017
Deferring to bmeurer. I'm just a suppression mercenary.
,
Mar 8 2017
The theory was that the unittest code races and not the prod code. We have too little insights into that code to actually fix the tests now before the launch and would need an owner of those tests.
,
Mar 8 2017
well, I happen to be an owner...
,
Mar 8 2017
Wanna take a look? My local repro: Turn on turbofan in V8: https://cs.chromium.org/chromium/src/v8/src/flag-definitions.h?q=TURBO_BOOL+package:%5Echromium$&l=453 Build chromium with: gn args out/tsan Args: dcheck_always_on = true enable_nacl = false is_component_build = false is_debug = false is_tsan = true strip_absolute_paths_from_debug_symbols = true symbol_level = 1 use_goma = true ninja -C out/tsan -j1000 net_unittests out/tsan/net_unittests --brave-new-test-launcher --test-launcher-bot-mode --test-launcher-print-test-stdio=always --gtest_filter=ProxyResolverV8TracingTest.CancelWhileBlockedInNonBlockingDns2 out/tsan/net_unittests --brave-new-test-launcher --test-launcher-bot-mode --test-launcher-print-test-stdio=always --gtest_filter=ProxyResolverV8TracingWrapperTest.CancelWhileBlockedInNonBlockingDns2
,
Mar 8 2017
Just talked with jochen. He is taking a look and currently not in favor of suppressing it without understanding.
,
Mar 8 2017
this was introduced in https://codereview.chromium.org/2116983002 I looked at this manually, and it looks like the race only happens due to DCHECKs so it's ok to add a suppression
,
Mar 8 2017
,
Mar 8 2017
,
Mar 8 2017
After suppression lands, this is not blocking the I+TF launch.
,
Mar 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ecaade2ce813c97d168576d035f8610c642947eb commit ecaade2ce813c97d168576d035f8610c642947eb Author: machenbach <machenbach@chromium.org> Date: Wed Mar 08 15:37:24 2017 tsan: Add suppression for a net unittest BUG=699562 R=jochen@chromium.org,mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2732883007 Cr-Commit-Position: refs/heads/master@{#455458} [modify] https://crrev.com/ecaade2ce813c97d168576d035f8610c642947eb/build/sanitizers/tsan_suppressions.cc
,
Aug 9
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by hablich@chromium.org
, Mar 8 2017Labels: -Priority-Medium Priority-Critical
Owner: machenb...@chromium.org