New issue
Advanced search Search tips

Issue 713817 link

Starred by 1 user

Issue metadata

Status: Archived
Owner: ----
Closed: Jan 10
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Weird Win-ASAN issue with PaymentRequestBrowserTestBase

Project Member Reported by mad@chromium.org, Apr 20 2017

Issue description

I get this from a local build of the browser tests and I don't think any of my new code has run yet. When I get a chance, I'll try to see if it reproduces on a clean build and let you know here.

In the mean time, EtienneB suggested I file this bug so you can take a look at it. Let me know if you need anything else.

Note: Google Test filter = PaymentRequestShippingAddressEditorTest.AsyncData
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from PaymentRequestShippingAddressEditorTest, where TypeParam =
[ RUN      ] PaymentRequestShippingAddressEditorTest.AsyncData
=================================================================
==5792==ERROR: AddressSanitizer: access-violation on unknown address 0x000000000168 (pc 0x7ff7a960c844 bp 0x0043ea4fb2f0 sp 0x0043ea4fb1b0 T0)
==5792==The signal is caused by a READ memory access.
==5792==Hint: address points to the zero page.
==5792==*** WARNING: Failed to initialize DbgHelp!              ***
==5792==*** Most likely this means that the app is already      ***
==5792==*** using DbgHelp, possibly with incompatible flags.    ***
==5792==*** Due to technical reasons, symbolization might crash ***
==5792==*** or produce wrong results.                           ***
    #0 0x7ff7a960c843 in std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::set<const itunes::parser::Track *,std::less<const itunes::parser::Track *>,std::allocator<const itunes::parser::Track *> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::set<const itunes::parser::Track *,std::less<const itunes::parser::Track *>,std::allocator<const itunes::parser::Track *> > > >,0> >::_Lbound<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > D:\src\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\include\xtree:2059
    #1 0x7ff7a29c53c4 in std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,TestChromeWebUIControllerFactory::WebUIProvider *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,TestChromeWebUIControllerFactory::WebUIProvider *> >,0> >::find D:\src\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\include\xtree:1489
    #2 0x7ff7a66a37f5 in service_manager::InterfaceRegistry::RemoveInterface d:\src\chromium\src\services\service_manager\public\cpp\lib\interface_registry.cc:152
    #3 0x7ff79d01a18e in payments::PaymentRequestBrowserTestBase::SetUpOnMainThread d:\src\chromium\src\chrome\browser\ui\views\payments\payment_request_browsertest_base.cc:86
 
Cc: r...@chromium.org
I'm able to repro:

C:\src\chromium\src>out\asan64\browser_tests.exe --gtest_filter=PaymentRequestShippingAddressEditorTest.EnteringValidDataWithDefaultCountry
IMPORTANT DEBUGGING NOTE: each test is run inside its own process.
For debugging a test inside a debugger, use the
--gtest_filter=<your_test_name> flag along with either
--single_process (to run the test in one launcher/browser process) or
--single-process (to do the above, and also run Chrome in single-process mode).
Using sharding settings from environment. This is shard 0/1
Using 1 parallel jobs.
Note: Google Test filter = PaymentRequestShippingAddressEditorTest.EnteringValidDataWithDefaultCountry
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from PaymentRequestShippingAddressEditorTest, where TypeParam =
[ RUN      ] PaymentRequestShippingAddressEditorTest.EnteringValidDataWithDefaultCountry
=================================================================
==12000==ERROR: AddressSanitizer: access-violation on unknown address 0x000000000168 (pc 0x7ff7674ab1c4 bp 0x00e264d5b550 sp 0x00e264d5b410 T0)
==12000==The signal is caused by a READ memory access.
==12000==Hint: address points to the zero page.
==12000==*** WARNING: Failed to initialize DbgHelp!              ***
==12000==*** Most likely this means that the app is already      ***
==12000==*** using DbgHelp, possibly with incompatible flags.    ***
==12000==*** Due to technical reasons, symbolization might crash ***
==12000==*** or produce wrong results.                           ***
    #0 0x7ff7674ab1c3 in std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::list<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> >,std::allocator<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> > > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::list<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> >,std::allocator<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> > > > > >,0> >::_Lbound<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > c:\src\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\include\xtree:2059
    #1 0x7ff76d4d8404 in std::_Tree<std::_Tmap_traits<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<const std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >,0> >::find c:\src\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\include\xtree:1489
    #2 0x7ff76e6b1235 in service_manager::InterfaceRegistry::RemoveInterface C:\src\chromium\src\services\service_manager\public\cpp\lib\interface_registry.cc:152
    #3 0x7ff764d4bf7e in payments::PaymentRequestBrowserTestBase::SetUpOnMainThread C:\src\chromium\src\chrome\browser\ui\views\payments\payment_request_browsertest_base.cc:86
    #4 0x7ff76a75950e in InProcessBrowserTest::RunTestOnMainThreadLoop C:\src\chromium\src\chrome\test\base\in_process_browser_test.cc:569
    #5 0x7ff76ac41dae in content::BrowserTestBase::ProxyRunTestOnMainThreadLoop C:\src\chromium\src\content\public\test\browser_test_base.cc:346
    #6 0x7ff76ccf0ab3 in ChromeBrowserMainParts::PreMainMessageLoopRunImpl C:\src\chromium\src\chrome\browser\chrome_browser_main.cc:1915
    #7 0x7ff76cced5ef in ChromeBrowserMainParts::PreMainMessageLoopRun C:\src\chromium\src\chrome\browser\chrome_browser_main.cc:1257
    #8 0x7ff7663cce21 in content::BrowserMainLoop::PreMainMessageLoopRun C:\src\chromium\src\content\browser\browser_main_loop.cc:1149
    #9 0x7ff766f8fdf4 in content::StartupTaskRunner::RunAllTasksNow C:\src\chromium\src\content\browser\startup_task_runner.cc:42
    #10 0x7ff7663c7b9e in content::BrowserMainLoop::CreateStartupTasks C:\src\chromium\src\content\browser\browser_main_loop.cc:945
    #11 0x7ff7663d601c in content::BrowserMainRunnerImpl::Initialize C:\src\chromium\src\content\browser\browser_main_runner.cc:125
    #12 0x7ff7663c092e in content::BrowserMain C:\src\chromium\src\content\browser\browser_main.cc:42
    #13 0x7ff76a373b0f in content::ContentMainRunnerImpl::Run C:\src\chromium\src\content\app\content_main_runner.cc:740
    #14 0x7ff76e90b7b4 in service_manager::Main C:\src\chromium\src\services\service_manager\embedder\main.cc:179
    #15 0x7ff76a3720b0 in content::ContentMain C:\src\chromium\src\content\app\content_main.cc:19
    #16 0x7ff76ac4127d in content::BrowserTestBase::SetUp C:\src\chromium\src\content\public\test\browser_test_base.cc:312
    #17 0x7ff76a755ce0 in InProcessBrowserTest::SetUp C:\src\chromium\src\chrome\test\base\in_process_browser_test.cc:266
    #18 0x7ff76c2eb2e7 in testing::Test::Run C:\src\chromium\src\testing\gtest\src\gtest.cc:2470
    #19 0x7ff76c2ecd5c in testing::TestInfo::Run C:\src\chromium\src\testing\gtest\src\gtest.cc:2656
    #20 0x7ff76c2edcb0 in testing::TestCase::Run C:\src\chromium\src\testing\gtest\src\gtest.cc:2774
    #21 0x7ff76c2fdc9c in testing::internal::UnitTestImpl::RunAllTests C:\src\chromium\src\testing\gtest\src\gtest.cc:4647
    #22 0x7ff76c2fd216 in testing::UnitTest::Run C:\src\chromium\src\testing\gtest\src\gtest.cc:4255
    #23 0x7ff76a7a6d31 in base::TestSuite::Run C:\src\chromium\src\base\test\test_suite.cc:266
    #24 0x7ff776741bb8 in ChromeTestSuiteRunner::RunTestSuite C:\src\chromium\src\chrome\test\base\chrome_test_launcher.cc:62
    #25 0x7ff76ac0bc9b in content::LaunchTests C:\src\chromium\src\content\public\test\test_launcher.cc:520
    #26 0x7ff776742487 in LaunchChromeTests C:\src\chromium\src\chrome\test\base\chrome_test_launcher.cc:120
    #27 0x7ff7767419d9 in main C:\src\chromium\src\chrome\test\base\browser_tests_main.cc:15
    #28 0x7ff7796224c8 in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253
    #29 0x7ffda8af8101 in BaseThreadInitThunk+0x21 (C:\Windows\system32\KERNEL32.DLL+0x180018101)
    #30 0x7ffdab50c5b3 in RtlUserThreadStart+0x33 (C:\Windows\SYSTEM32\ntdll.dll+0x18005c5b3)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: access-violation c:\src\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\include\xtree:2059 in std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::list<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> >,std::allocator<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> > > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::list<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> >,std::allocator<std::unique_ptr<extensions::QuotaLimitHeuristic,std::default_delete<extensions::QuotaLimitHeuristic> > > > > >,0> >::_Lbound<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
==12000==ABORTING
[1/1] PaymentRequestShippingAddressEditorTest.EnteringValidDataWithDefaultCountry (11546 ms)
1 test failed:
    PaymentRequestShippingAddressEditorTest.EnteringValidDataWithDefaultCountry (../../chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc:211)

C:\src\chromium\src>


















































































































I added a DCHECK to registry, and with an ASAN/Clang build, it's NULL.

> src\chrome\browser\ui\views\payments\payment_request_browsertest_base.cc

  content::WebContents* web_contents = GetActiveWebContents();
  service_manager::InterfaceRegistry* registry =
      web_contents->GetMainFrame()->GetInterfaceRegistry();
  ASSERT_TRUE(registry);


But, with a MSVC and a CLANG build, it's not NULL.
Somehow, the CLANG build is breaking the unittest.

The CLANG64 build has these TLS:

    TLS Callbacks

          Address
          ----------------
          0000000141CBA030  ?OnThreadExit@@YAXPEAXK0@Z (void __cdecl OnThreadExit(void *,unsigned long,void *))
          000000014265A5C0
          0000000000000000


The Clang/ASAN64 build has these TLS:
    TLS Callbacks

          Address
          ----------------
          00000001474D3BE0
          0000000147812810  ?OnThreadExit@@YAXPEAXK0@Z (void __cdecl OnThreadExit(void *,unsigned long,void *))
          000000014A086620
          0000000000000000


The MSVC build has these TLS:

   TLS Callbacks

          Address
          ----------------
          0000000141EC38C0  ?OnThreadExit@@YAXPEAXK0@Z (void __cdecl OnThreadExit(void *,unsigned long,void *))
          000000014283A860
          0000000000000000


At a glance, this is looking good.
Status: Archived (was: Untriaged)
Archiving P3s older than 1 year with no owner or component.

Sign in to add a comment