New issue
Advanced search Search tips

Issue 605699 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug

Blocked on:
issue 605739

Blocking:
issue 599776



Sign in to add a comment

DevTools' Screenshot functionality timing out intermittently on Mac

Project Member Reported by kbr@chromium.org, Apr 21 2016

Issue description

The screenshot_sync_tests have become flaky on Mac OS apparently due to DevTools' screenshot command timing out. When the timeout happens it looks like subsequent tests fail.

Attached are stdout from these two runs (in case the logs expire):

https://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/214584
https://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/214490

These tests are failing on fairly recent Mac Minis, and usually run in about 25 seconds, so there is no excuse for them timing out at the 1 minute mark.

These tests also run on the CQ, so figuring out what is going wrong is especially important. They cover crucial browser functionality and ensure that pixels reach the screen correctly.

 
stdout-1.txt
50.0 KB View Download
stdout-2.txt
50.0 KB View Download

Comment 1 by kbr@chromium.org, Apr 21 2016

Log excerpts for easier searching:

[ RUN      ] ScreenshotSync.WithCanvas
...
[1284:49223:0420/131003:WARNING:simple_synchronous_entry.cc(929)] Could not open platform files for entry.
Can't get standard output with --show-stdout
Traceback (most recent call last):
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/story_runner.py", line 84, in _RunStoryAndProcessErrorIfNeeded
    state.RunStory(results)
  File "/b/swarm_slave/work/isolated/runG4__0c/content/test/gpu/gpu_tests/gpu_test_base.py", line 111, in RunStory
    RunStoryWithRetries(GpuSharedPageState, self, results)
  File "/b/swarm_slave/work/isolated/runG4__0c/content/test/gpu/gpu_tests/gpu_test_base.py", line 72, in RunStoryWithRetries
    super(cls, shared_page_state).RunStory(results)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/page/shared_page_state.py", line 326, in RunStory
    self._current_page, self._current_tab, results)
  File "/b/swarm_slave/work/isolated/runG4__0c/content/test/gpu/gpu_tests/screenshot_sync.py", line 57, in ValidateAndMeasurePage
    CheckScreenshot()
  File "/b/swarm_slave/work/isolated/runG4__0c/content/test/gpu/gpu_tests/screenshot_sync.py", line 46, in CheckScreenshot
    screenshot = tab.Screenshot(5)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/browser/tab.py", line 117, in Screenshot
    return self._inspector_backend.Screenshot(timeout)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py", line 35, in inner
    inspector_backend._ConvertExceptionFromInspectorWebsocket(e)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py", line 32, in inner
    return func(inspector_backend, *args, **kwargs)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py", line 139, in Screenshot
    return self._page.CaptureScreenshot(timeout)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_page.py", line 146, in CaptureScreenshot
    res = self._inspector_websocket.SyncRequest(request, timeout)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py", line 110, in SyncRequest
    res = self._Receive(timeout)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py", line 149, in _Receive
    data = self._socket.recv()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/third_party/websocket-client/websocket.py", line 596, in recv
    opcode, data = self.recv_data()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/third_party/websocket-client/websocket.py", line 606, in recv_data
    frame = self.recv_frame()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/third_party/websocket-client/websocket.py", line 637, in recv_frame
    self._frame_header = self._recv_strict(2)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/third_party/websocket-client/websocket.py", line 746, in _recv_strict
    bytes = self._recv(shortage)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/third_party/websocket-client/websocket.py", line 732, in _recv
    raise WebSocketTimeoutException(e.message)
TimeoutException: 
********************************************************************************
(/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py:315 _ConvertExceptionFromInspectorWebsocket) The app is probably crashed:

Found Minidump: False
Stack Trace:
********************************************************************************
	No crash dump found.
********************************************************************************
Standard output:
********************************************************************************
********************************************************************************
********************************************************************************
(/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py:320 _ConvertExceptionFromInspectorWebsocket) Original exception:
timed out
********************************************************************************
(/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py:341 _AddDebuggingInformation) Received a socket error in the browser connection and the tab no longer exists. The tab probably crashed.
********************************************************************************
(/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py:342 _AddDebuggingInformation) Debugger url: ws://127.0.0.1:49332/devtools/page/1F3EF9C0-17E7-4ED0-8432-925BAE98E011

[  FAILED  ] ScreenshotSync.WithCanvas (67528 ms)
[ RUN      ] ScreenshotSync.WithDivs
Traceback (most recent call last):
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/story_runner.py", line 77, in _RunStoryAndProcessErrorIfNeeded
    state.WillRunStory(story)
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/page/shared_page_state.py", line 253, in WillRunStory
    if len(self.browser.tabs) == 0:
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/browser/tab_list.py", line 15, in __len__
    return self._tab_list_backend.__len__()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend_list.py", line 95, in __len__
    self._Update()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend_list.py", line 99, in _Update
    backends_map = self._devtools_client.GetUpdatedInspectableContexts()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py", line 290, in GetUpdatedInspectableContexts
    contexts = self._ListInspectableContexts()
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py", line 215, in _ListInspectableContexts
    return self._devtools_http.RequestJson('')
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py", line 107, in RequestJson
    return json.loads(self.Request(path, timeout))
  File "/b/swarm_slave/work/isolated/runG4__0c/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py", line 88, in Request
    response = self._conn.getresponse()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1132, in getresponse
    response.begin()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 453, in begin
    version, status, reason = self._read_status()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 409, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 480, in readline
    data = self._sock.recv(self._rbufsize)
DevToolsClientConnectionError: timed out

(WARNING) 2016-04-20 13:11:44,079 desktop_browser_backend.Close:527  Failed to gracefully shutdown.
(WARNING) 2016-04-20 13:11:44,079 desktop_browser_backend.Close:531  Proceed to kill the browser.
[  FAILED  ] ScreenshotSync.WithDivs

Comment 2 by kbr@chromium.org, Apr 21 2016

Blocking: 599776

Comment 3 by kbr@chromium.org, Apr 21 2016

Blockedon: 605739

Comment 4 by kbr@chromium.org, Apr 21 2016

Unfortunately running this test is so slow on my local machine that I can't produce a repro case. Filed  Issue 605739  about that.

Comment 5 by kbr@chromium.org, Apr 23 2016

Cc: nedngu...@google.com
Labels: -Pri-1 Pri-2
nednguyen@ helped me get numpy and cv2 into a local build of Telemetry. With the attached changes I tried running the test in a loop (after building the Release browser)

./content/test/gpu/run_gpu_test.py screenshot_sync --browser=release --pageset-repeat=100 --max-failures=1

I wasn't able to easily provoke the failures. Maybe it happens more often on a slow machine, or in cold start situations.

telemetry-changes.patch
2.3 KB Download

Comment 6 by kbr@chromium.org, Apr 23 2016

Owner: pfeldman@chromium.org
Status: Assigned (was: Untriaged)
Pavel, do you think someone from the DevTools team could try running this test next week on Mac OS and see if they can provoke the failure seen on the Mac bots?

Comment 7 by kbr@chromium.org, Apr 23 2016

Note that the tests flaking above were:
ScreenshotSync.WithCanvas
ScreenshotSync.WithDivs

Project Member

Comment 8 by bugdroid1@chromium.org, Apr 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c8d7fb1437ad351bae551f5a7aaaf736e83a07ac

commit c8d7fb1437ad351bae551f5a7aaaf736e83a07ac
Author: kbr <kbr@chromium.org>
Date: Sat Apr 23 03:41:53 2016

Suppress screenshot_sync_tests flakiness on Mac with Intel GPU.

Update the bug ID for the preexisting Windows suppression.

BUG= 599776 ,  605699 
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel
NOTRY=true
TBR=zmo@chromium.org

Review URL: https://codereview.chromium.org/1919623002

Cr-Commit-Position: refs/heads/master@{#389356}

[modify] https://crrev.com/c8d7fb1437ad351bae551f5a7aaaf736e83a07ac/content/test/gpu/gpu_tests/screenshot_sync_expectations.py

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 25 2016

Labels: merge-merged-2716
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c8d7fb1437ad351bae551f5a7aaaf736e83a07ac

commit c8d7fb1437ad351bae551f5a7aaaf736e83a07ac
Author: kbr <kbr@chromium.org>
Date: Sat Apr 23 03:41:53 2016

Suppress screenshot_sync_tests flakiness on Mac with Intel GPU.

Update the bug ID for the preexisting Windows suppression.

BUG= 599776 ,  605699 
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel
NOTRY=true
TBR=zmo@chromium.org

Review URL: https://codereview.chromium.org/1919623002

Cr-Commit-Position: refs/heads/master@{#389356}

[modify] https://crrev.com/c8d7fb1437ad351bae551f5a7aaaf736e83a07ac/content/test/gpu/gpu_tests/screenshot_sync_expectations.py

Status: Fixed (was: Assigned)

Comment 11 by kbr@chromium.org, May 2 2016

Status: WontFix (was: Fixed)
To be clear, no root cause for this bug was found. Changing status to WontFix.

Sign in to add a comment