New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 808508 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

Many unit tests fails on Windows if High Performance Counter/Timer is not supported

Project Member Reported by yn...@vivaldi.com, Feb 2 2018

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.97 Safari/537.36 Vivaldi/1.94.1008.40

Steps to reproduce the problem:
1. Run unit tests (including browser tests) on a Windows system without High Performance Counter/Timer support. This can be simulated by changing this if statement in InitializeNowFunctionPointer() in base/time/time_win.cc from

 if (!QueryPerformanceFrequency(&ticks_per_sec))

to

 if (true || !QueryPerformanceFrequency(&ticks_per_sec))

What is the expected behavior?
The tests should pass

What went wrong?
Many tests fails.

In Vivaldi we have disabled approximately 100 tests for this reason because they pass when run locally, but fail on our Windows testers, but also fail when simulating missing HPC.

Did this work before? N/A 

Chrome version: 62.0.3202.97  Channel: n/a
OS Version: 10.0
Flash Version: 

Vivaldi is running our Windows testers on VMs hosted in a KVM VM manager system, on a Ubuntu host running on Xeon processor blades.

We have determined that a number of tests fails due to HPC support being disabled on these VMs (by simulating the missing HPC support on local developer machines). In total we have currently disabled ~100 tests for this reason, with new ones being added with each chromium source upgrade.

Attempts to simulate HPC support not just failed, but caused other functionality and tests to break.

These failures may indicate the existence of hard to reproduce bugs that only occur on hardware (or VMs) with CPUs that does not support HPC.

Our current list of disabled tests is included below. It may contain tests that have been removed (it's been a while since this list was last cleared of such tests). It is almost certainly not complete, since we are not running all the test used by the Chromium builders.

MetricsWebContentsObserverTest.*
DocumentWritePageLoadMetricsObserverTest.*
FromGWSPageLoadMetricsObserverTest.*
RenderWidgetUnittest.TouchStartDuringOrOutsideFlingUmaMetrics
OfflinePageModelImplTest.DownloadMetrics
ActivityAnalyzerTest.GlobalAnalyzerConstruction
ActivityTrackerTest.ScopedTaskTest
ActivityTrackerTest.ThreadDeathTest
ActivityTrackerTest.ProcessDeathTest
RenderWidgetUnittest.TouchDuringOrOutsideFlingUmaMetrics
HttpStreamFactoryImplJobControllerTest.DelayedTCP
DevToolsSanityTest.TestNetworkPushTime
BidirectionalStreamTest.LoadTimingTwoRequests
BidirectionalStreamTest.SimplePostRequest
CacheStorageCacheTestP.DeleteWithIgnoreSearchFalse
CacheStorageCacheTestP.TwoKeysThenOne
CacheStorageCacheTestP.DeleteWithIgnoreSearchTrue
CacheStorageCacheTestP.KeysWithIgnoreSearchTrue
CacheStorageCacheTestP.MatchAll_TwoResponsesThenOne
CacheStorageCacheTestP.TwoKeys
CacheStorageCacheTestP.MatchAll_TwoResponsesThenOne
InputEventFilterTest.NonBlockingWheel
InputEventFilterTest.Basic
RenderViewImplTest.RendererNavigationStartTransmittedToBrowser
SRTFetcherTest.ReporterLogging_EnabledNoRecentLogging
SpdySessionTest.MetricsCollectionOnPushStreams
RenderThreadImplDiscardableMemoryBrowserTest.LockDiscardableMemory
WebRtcMediaRecorderTest.PeerConnection
WebRtcMediaRecorderTest.ResumeAndDataAvailable
WebRtcMediaRecorderTest.StartAndDataAvailable
WebRtcMediaRecorderTest.TwoChannelAudioRecording
SBNavigationObserverTest.TestCleanUpStaleNavigationEvents
SBNavigationObserverTest.TestCleanUpStaleIPAddresses
SBNavigationObserverTest.TestCleanUpStaleUserGestures
SBNavigationObserverTest.TestNavigationEventList
SBNavigationObserverTest.TestRecordHostToIpMapping
SBNavigationObserverBrowserTest.PPAPIDownloadWithUserGestureOnHostingFrame
TemplateURLServiceTest.LastModifiedTimeUpdate
UploadProgressTrackerTest.TimePassed
SRTFetcherTest.ReporterLogging_EnabledFirstRun
AutofillProfileComparatorTest.MergeAddressesMostUniqueTokens
NetworkMetricsProviderTest.EffectiveConnectionType
TimeTicks.WinRollover
ReportingCacheTest.EvictOldestReport
PaymentManagerTest.ClearPaymentInstruments
PaymentManagerTest.KeysOfPaymentInstruments
SubresourceFilterBrowserTest.ExpectPerformanceHistogramsAreRecorded
UpdateClientTest.TwoCrxUpdateDownloadTimeout
UpdateClientTest.TwoCrxUpdateNoUpdate
UpdateClientTest.TwoCrxUpdate
ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming
ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_BrowserStartup
ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_WaitForRenderer
ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_NegativeLatency
ServiceWorkerURLRequestJobTest.NavPreloadMetrics_NavPreloadFirst_MainFrame
ContentSubresourceFilterThrottleManagerTest.LogActivation
SessionsSyncManagerTest.TrackTasksOnLocalTabModified
CookieManagerImplTest.GetAllCookies
DataReductionProxyNetworkDelegateTest.IncrementingMainFramePageId
DataReductionProxyNetworkDelegateTest.RedirectSharePid
DataReductionProxyNetworkDelegateTest.ResetSessionResetsId
DataReductionProxyNetworkDelegateTest.SubResourceNoPageId
DownloadArchivesTaskTest.MultipleLargeArchivesToDownload
DownloadArchivesTaskTest.SingleArchiveToDownload
DownloadArchivesTaskTest.TooManyArchivesToDownload
MarkPageAccessedTaskTest.MarkPageAccessedTwice
CookieManagerImplTest.GetCookieListAccessTime
BackFwdMenuModelTest.ChapterStops
SafeBrowsingBlockingPageTest.PageWithMultipleMalwareResourceProceedThenDontProceed
SafeBrowsingBlockingPageTest.PageWithMultipleMalwareResourceDontProceed
SafeBrowsingBlockingPageTest.NavigatingBackAndForth
SafeBrowsingBlockingPageTest.PageWithMalwareResourceDontProceed
CookieManagerTest.GetAllCookies
CookieManagerTest.GetCookieListAccessTime
ServiceWorkerURLLoaderJobTest.Basic
ServiceWorkerURLLoaderJobTest.BlobResponse
ServiceWorkerURLLoaderJobTest.StreamResponseAndCancel
ServiceWorkerURLLoaderJobTest.Redirect
ServiceWorkerURLLoaderJobTest.EarlyResponse
ServiceWorkerURLLoaderJobTest.NonExistentBlobUUIDResponse
ServiceWorkerURLLoaderJobTest.StreamResponse
ServiceWorkerURLLoaderJobTest.StreamResponse_Abort
ServiceWorkerURLLoaderJobTest.NavigationPreload
ServiceWorkerURLLoaderJobTest.BrokenBlobResponse
OverscrollNavigationOverlayTest.WithScreenshot
OverscrollNavigationOverlayTest.OverlayWindowSwap
OverscrollNavigationOverlayTest.Navigation_LoadingUpdate
OverscrollNavigationOverlayTest.ForwardNavigation
OverscrollNavigationOverlayTest.CancelAfterSuccessfulNavigation
OverscrollNavigationOverlayTest.ImmediateLoadOnNavigate
OverscrollNavigationOverlayTest.Navigation_PaintUpdate
OverscrollNavigationOverlayTest.WithoutScreenshot
OverscrollNavigationOverlayTest.ForwardNavigationCancelled
WebContentsImplTest.CrossSiteNavigationBackPreempted
SSLUITest.TestBadHTTPSDownload
 
Labels: Needs-Milestone
Components: Internals>Core
Suggest you open issues for each class of bugs and submit patches to fix them individually and then cross link them to this master bug. 

Comment 3 by yn...@vivaldi.com, Feb 6 2018

I am sorry, but I don't think that is practical.

First of all, I am not familiar with the code in the relevant functionality, and AFAICT many/most of them fail due to problems deep in the metrics code. A few of them might conceivable completing so quickly that the before/after timestamps are the same, and a simple change to accepting before <= after, rather than before < after, _might_ fix it, but as I am unfamiliar with these parts of the code that could cause regressions to pass undetected. For reference, I did try to find other ways to fix these problems originally, but was not able to find solutions, so ever since I have been disabling these tests as they become an issue, and have been confirmed to be the timer issue (and please note that this is Windows-only issue, it does not affect our Linux tester, which is also a VM running in a similar environment, and I assume most of these tests are run by both platforms; it could conceivably be that the problem can be solved in the Windows time code).

Secondly, these are just the failures from the tests we are running, there are a lot of other tests from the chromium project that we are not running and which likely have the same issue (AFAICT there is at least one other bug reported for a similar issue, https://bugs.chromium.org/p/chromium/issues/detail?id=723225 ).
Cc: sindhu.chelamcherla@chromium.org
Labels: TE-NeedsTriageHelp
As this issue is related to unit tests unable to triage this issue from TE end. Hence adding TE-NeedsTriageHelp for further investigation on dev team.

Could someone from Internals>Core team to please have a look at this issue.

Thanks!

Sign in to add a comment