New issue
Advanced search Search tips

Issue 699562 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 698746


Participants' hotlists:
Hotlist-2
I-TF-Launch

Previous locations:
v8:6065


Sign in to add a comment

linux chromium tsan failing some ProxyResolverV8Tracing* tests

Project Member Reported by hablich@chromium.org, Mar 8 2017

Issue description

see 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)
==================
 
Cc: mstarzinger@chromium.org
Labels: -Priority-Medium Priority-Critical
Owner: machenb...@chromium.org
This tests need to be suppressed (ProxyResolverV8TracingTest_CancelWhileBlockedInNonBlockingDns2_Test) and later addressed.
Can you explain why you think they need to be suppressed instead of fixed?
Deferring to bmeurer. I'm just a suppression mercenary.
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.
well, I happen to be an owner...
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
Cc: machenb...@chromium.org
Owner: jochen@chromium.org
Just talked with jochen. He is taking a look and currently not in favor of suppressing it without understanding.
Cc: jochen@chromium.org
Owner: eroman@chromium.org
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
Project: chromium
Moved issue v8:6065 to now be issue chromium:699562.
Components: Internals>Network>Proxy
Labels: -Priority-Critical Stability-ThreadSanitizer
Labels: Pri-2
After suppression lands, this is not blocking the I+TF launch.
Project Member

Comment 12 by bugdroid1@chromium.org, 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

Owner: ----
Status: Available (was: Assigned)

Sign in to add a comment