Test graphics_WebGLAquarium/avg_fps_1000_fishes is not producing performance data on many devices |
||||||
Issue description
The test graphics_WebGLAquarium/avg_fps_1000_fishes has not produced data on several platforms for the last three runs of the test in the lab.
05/09 03:54:22.450 DEBUG| base_utils:0176| Running 'rm -rf /var/spool/crash/*'
05/09 03:54:22.462 DEBUG| base_utils:0176| Running 'logger "autotest finished iteration /usr/local/autotest/results/default/graphics_WebGLAquarium/sysinfo/iteration.1"'
05/09 03:54:22.485 WARNI| test:0606| Autotest caught exception when running test:
Traceback (most recent call last):
File "/usr/local/autotest/common_lib/test.py", line 600, in _exec
_call_test_function(self.execute, *p_args, **p_dargs)
File "/usr/local/autotest/common_lib/test.py", line 810, in _call_test_function
raise error.UnhandledTestFail(e)
UnhandledTestFail: Unhandled TimeoutException:
Exception thrown when trying to capture console output: TimeoutException('',)
Traceback (most recent call last):
File "/usr/local/autotest/common_lib/test.py", line 804, in _call_test_function
return func(*args, **dargs)
File "/usr/local/autotest/common_lib/test.py", line 461, in execute
dargs)
File "/usr/local/autotest/common_lib/test.py", line 347, in _call_run_once_with_retry
postprocess_profiled_run, args, dargs)
File "/usr/local/autotest/common_lib/test.py", line 376, in _call_run_once
self.run_once(*args, **dargs)
File "/usr/local/autotest/tests/graphics_WebGLAquarium/graphics_WebGLAquarium.py", line 298, in run_once
self.run_fish_test(cr.browser, test_url, n)
File "/usr/local/autotest/tests/graphics_WebGLAquarium/graphics_WebGLAquarium.py", line 109, in run_fish_test
tab.WaitForDocumentReadyStateToBeComplete()
File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/browser/web_contents.py", line 70, in WaitForDocumentReadyStateToBeComplete
'document.readyState == "complete"', timeout)
File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/browser/web_contents.py", line 136, in WaitForJavaScriptExpression
e.message + '\n' + debug_message)
TimeoutException:
Exception thrown when trying to capture console output: TimeoutException('',)
Platforms currently affected:
orco
yuna
paine
sumo
cyan
lulu
ultima
guado
butterfly
chell
terra
big
celes
quawks
parrot
gnawty
expresso
gandof
setzer
rikku
panther
edgar
wizpig
tidus
sentry
lars
buddy
blaze
ninja
reks
Example logs
https://pantheon.corp.google.com/storage/browser/chromeos-autotest-results/62652349-haddowk
https://pantheon.corp.google.com/storage/browser/chromeos-autotest-results/62653455-haddowk
https://pantheon.corp.google.com/storage/browser/chromeos-autotest-results/62653855-haddowk
,
May 9 2016
Just FYI, this regression should be in Chrome between https://chromium.googlesource.com/chromium/src/+log/52.0.2724.0..52.0.2726.0?pretty=fuller&n=10000
,
May 9 2016
So, it is not login. On the device pointing to the webglsamples.org site the aquarium hangs. Also autotest sees lots of crashes, which need to be symbolized.
,
May 9 2016
Issue 610494 has been merged into this issue.
,
May 9 2016
Ilja, what are implications of this issue? Is just the demo not working or this issue affects WebGL in general?
,
May 9 2016
Looks like the crashes were unrelated.
,
May 9 2016
Still happening on tot #392450.
,
May 10 2016
,
May 10 2016
ihf: Could you provide some more information about how you determined this? Did you do a bisect? A local revert that fixed the problem? The quoted CL ranged also has several WebGL changes by me, which I would expect to be more likely culprits.
,
May 10 2016
#391685 doesn't show the hang, #391686 does show the hang.
,
May 10 2016
I played with different command line flags on Linux to match about:gpu to the lars status. I did not get the hang on Linux. Looks like a Chromebook will be needed for repro.
,
May 10 2016
I can help you tomorrow to set up a system.
,
May 10 2016
((392450-391934)-391686) shows now hang.
,
May 10 2016
now -> no.
,
May 11 2016
,
May 11 2016
This is caused by the change in GpuChannel::HandleMessage from stub && stub->HasUnprocesedCommands() to !message_queue->IsScheduled(). There exist instances where "stub && stub->HasUnprocesedCommands()" returns true but "!message_queue->IsScheduled()" returns false. Investigating further.
,
May 11 2016
The only place that the message_queue gets descheduled is in GpuCommandBufferStub::OnWaitFenceSync. I think we could change the conditional to have use both clauses, as in: if (stub && stub->HasUnprocesedCommands() || !message_queue->IsScheduled()) Alternatively, we could have GpuCommandBufferStub::OnAsyncFlush also deschedule the message_queue, and reschedule when the flush is finished. [CommandExecutor will be left scheduled.] This would require the type of |scheduled_| to become int, since the CommandExecutor may process OnWaitFencSync commands. The route we take mostly depends on the semantics we want to give GpuChannelMessageQueue::scheduled_. sunnyps, piman: thoughts?
,
May 11 2016
Oh I see. The only way for there to be UnprocessedCommands in the stub is if it has a FenceSync it needed to wait on, or if it was pre-empted.
,
May 11 2016
Oh, preemption. "if (stub && stub->HasUnprocesedCommands() || !message_queue->IsScheduled())" is probably the right thing in the short term.
,
May 13 2016
,
May 18 2016
(FYI: CL:1965253002 landed in 52.0.2733.0)
,
May 19 2016
Verified on 8337.0.0/52.0.2739.0
,
Jul 31 2016
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by ihf@chromium.org
, May 9 2016