New issue
Advanced search Search tips

Issue 820075 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug

Blocking:
issue 818454
issue 819352



Sign in to add a comment

context_lost_tests flakes on Linux Debug (NVIDIA)

Project Member Reported by kylec...@chromium.org, Mar 8 2018

Issue description

context_lost_tests has become flaky on Linux Debug (NVIDIA). GpuCrash_GPUProcessCrashesExactlyOncePerVisitToAboutGpuCrash is failing. The first failing run is here:

https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/91506

Here is the crash stack:
	 0  chrome!CanPurgeBackgroundedRenderer [tab_manager.cc : 357 + 0x6]
	 1  chrome!PurgeBackgroundedTabsIfNeeded [tab_manager.cc : 493 + 0xc]
	 2  chrome!resource_coordinator::TabManager::UpdateTimerCallback() + 0x64
	 3  chrome!void base::internal::FunctorTraits<void (OAuth2TokenService::Fetcher::*)(), void>::Invoke<OAuth2TokenService::Fetcher*>(void (OAuth2TokenService::Fetcher::*)(), OAuth2TokenService::Fetcher*&&) + 0x7d
	 4  chrome!MakeItSo<safe_browsing::ExtendedReportingLevel (safe_browsing::ServicesDelegateImpl::*const &)() const, safe_browsing::ServicesDelegateImpl *> [bind_internal.h : 530 + 0x15]
	 5  chrome!RunImpl<safe_browsing::ExtendedReportingLevel (safe_browsing::ServicesDelegateImpl::*const &)() const, const std::__1::tuple<base::internal::UnretainedWrapper<safe_browsing::ServicesDelegateImpl> > &, 0> [bind_internal.h : 604 + 0x9]
	 6  chrome!base::internal::Invoker<base::internal::BindState<void (OAuth2TokenService::Fetcher::*)(), base::internal::UnretainedWrapper<OAuth2TokenService::Fetcher> >, void ()>::Run(base::internal::BindStateBase*) + 0x2c
	 7  libbase.so!base::RepeatingCallback<void ()>::Run() const & + 0x3d
	 8  libbase.so!base::Timer::RunScheduledTask() + 0x118
	 9  libbase.so!base::BaseTimerTaskInternal::Run() + 0x49
	10  libbase.so!void base::internal::FunctorTraits<void (base::FileDescriptorWatcher::Controller::Watcher::*)(), void>::Invoke<base::FileDescriptorWatcher::Controller::Watcher*>(void (base::FileDescriptorWatcher::Controller::Watcher::*)(), base::FileDescriptorWatcher::Controller::Watcher*&&) + 0x7d
	11  libbase.so!MakeItSo<void (base::BaseTimerTaskInternal::*)(), base::BaseTimerTaskInternal *> [bind_internal.h : 530 + 0x15]
	12  libbase.so!RunImpl<void (base::BaseTimerTaskInternal::*)(), std::__1::tuple<base::internal::OwnedWrapper<base::BaseTimerTaskInternal> >, 0> [bind_internal.h : 604 + 0x9]
	13  libbase.so!RunOnce [bind_internal.h : 572 + 0x5]
	14  libbase.so!Run [callback.h : 95 + 0x9]
	15  libbase.so!RunTask [task_annotator.cc : 61 + 0x5]
	16  libbase.so!base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) + 0xe9
	17  libbase.so!base::MessageLoop::RunTask(base::PendingTask*) + 0x38b
	18  libbase.so!DeferOrRunPendingTask [message_loop.cc : 407 + 0x13]
	19  libbase.so!DoDelayedWork [message_loop.cc : 491 + 0xc]
	20  libbase.so!base::MessagePumpGlib::HandleDispatch() + 0x77
	21  libbase.so!base::(anonymous namespace)::WorkSourceDispatch(_GSource*, int (*)(void*), void*) + 0x21
	22  libglib-2.0.so.0.4002.0 + 0x48e04
	23  libglib-2.0.so.0.4002.0 + 0x57b40
	24  libglib-2.0.so.0.4002.0 + 0x49048
	25  libbase.so!base::RunLoop::ScopedDisallowRunningForTesting::~ScopedDisallowRunningForTesting() + 0x130
	26  chrome + 0x1744000
	27  chrome + 0x1744000
	28  libglib-2.0.so.0.4002.0 + 0x490ec
	29  libbase.so!base::MessagePumpGlib::Run(base::MessagePump::Delegate*) + 0x9f
	30  libbase.so!Run [message_loop.cc : 346 + 0xc]
	31  libbase.so!base::internal::LockImpl::Unlock() + 0x60
	32  libbase.so!DebugDeallocate(void*, int) + 0xe5
	33  libbase.so!MallocHook::GetDeleteHook() + 0x10
	34  libbase.so!MallocHook::InvokeDeleteHook(void const*) + 0x31
	35  libbase.so!tc_free + 0x23
	36  libbase.so!(anonymous namespace)::TCFree(base::allocator::AllocatorDispatch const*, void*, void*) + 0x1d
	37  libbase.so!ShimFree + 0x2f
	38  libbase.so!base::Lock::Release() + 0x26
	39  libbase.so!base::AutoLock::~AutoLock() + 0x2b
	40  libbase.so!DetachFromSequence [sequence_checker_impl.cc : 49 + 0x5]
	41  libbase.so!Run [run_loop.cc : 133 + 0x20]
	42  libbase.so!tc_free + 0x23
	43  libbase.so!(anonymous namespace)::TCFree(base::allocator::AllocatorDispatch const*, void*, void*) + 0x1d
	44  libbase.so!ShimFree + 0x2f
	45  libbase.so!free + 0x19
	46  libc++.so!operator delete(void*) + 0x20
	47  libc++.so!~basic_string [new : 236 + 0x5]
	48  chrome!SetExecutionPhase [execution_phase.cc : 39 + 0xc]
	49  libbase.so!base::internal::StrictNumeric<unsigned long> base::internal::CheckedNumeric<unsigned long>::ValueOrDie<unsigned long, base::internal::CheckOnFailure>() const + 0x55
	50  libbase.so!base::time_internal::SaturatedAdd(base::TimeDelta, long) + 0x5d
	51  libbase.so!base::Time::Time(long) + 0x28
	52  libbase.so!base::time_internal::TimeBase<base::Time>::operator+(base::TimeDelta) const + 0x34
	53  libbase.so!base::subtle::TimeTicksNowIgnoringOverride() + 0x3c
	54  chrome!metrics::MetricsService::SetExecutionPhase(metrics::ExecutionPhase, PrefService*) + 0x34
	55  chrome!ChromeBrowserMainParts::MainMessageLoopRun(int*) + 0x171
	56  libbase.so!FactoryTimeGet [histogram.cc : 278 + 0xc]
	57  libbase.so!base::Histogram::Add(int) + 0x21
	58  libbase.so!base::HistogramBase::AddTime(base::TimeDelta const&) + 0x3a
	59  libcontent.so!content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&)::ScopedHistogramTimer0::~ScopedHistogramTimer0() + 0xdc
	60  libcontent.so!RunMainMessageLoopParts [browser_main_loop.cc : 1104 + 0xc]
	61  libcontent.so!Initialize [browser_main_runner.cc : 149 + 0x11]
	62  libbase.so!tcmalloc::PageHeap::GetDescriptor(unsigned long) const + 0x1d
	63  libcontent.so!Run [browser_main_runner.cc : 160 + 0xc]
	64  libbase.so!MallocBlock::Initialize(unsigned long, int) + 0x1e0
	65  libbase.so!base::debug::ScopedLockAcquireActivity::ScopedLockAcquireActivity(base::internal::LockImpl const*) + 0x2d
	66  libbase.so!MallocBlock::Allocate(unsigned long, int) + 0x207
	67  libbase.so!MallocHook::InvokeNewHook(void const*, unsigned long) + 0x39
	68  libbase.so!tc_malloc + 0x26
	69  libbase.so!(anonymous namespace)::TCMalloc(base::allocator::AllocatorDispatch const*, unsigned long, void*) + 0x1d
	70  libcontent.so!BrowserMainRunnerImpl [browser_main_runner.cc : 55 + 0xf]
	71  libcontent.so!BrowserMain [browser_main.cc : 46 + 0x9]

Here is the fifteen previous runs, the culprit is likely in there:
https://test-results.appspot.com/revision_range?start=541416&end=541546

Looking now...
 
Cc: sebmarchand@chromium.org
Owner: kylec...@chromium.org
Status: Started (was: Untriaged)
+sebmarchand

suspect CL is https://chromium-review.googlesource.com/952405. The CL changes an early return on nullptr into a DCHECK in TabManager::PurgeBackgroundedTabsIfNeeded(), where the crash is coming from. Going to revert.
Status: Fixed (was: Started)
Revert is here: https://crrev.com/c/955882

I was able to reproduce the failure within a couple of iterations when built with the GN configuration as the bot:

https://ci.chromium.org/buildbot/chromium.gpu/GPU%20Linux%20Builder%20%28dbg%29/

$ gn args out/gpu
# args
$ ninja -C out/gpu chrome
$ true ; while [ $? -eq 0 ] ; do content/test/gpu/run_gpu_integration_test.py context_lost --show-stdout --browser=exact --browser-executable='out/gpu/chrome' --passthrough -v --extra-browser-args='--enable-logging=stderr --js-flags=--expose-gc'  --test-filter='GpuCrash_GPUProcessCrashesExactlyOncePerVisitToAboutGpuCrash'; done

Comment 3 by kbr@chromium.org, Mar 8 2018

Blocking: 818454 819352

Comment 4 by kbr@chromium.org, Mar 8 2018

Thanks Kyle for tracking this down! Linked to the bugs associated with the CL you reverted.

Sign in to add a comment