| Index: content/test/gpu/gpu_tests/gpu_integration_test.py
|
| diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py
|
| index 3c4e98d3d4b10d574ce1517231bb019d821c347a..ef6bb7e5287237f05a899844de9b628cfcbf73de 100644
|
| --- a/content/test/gpu/gpu_tests/gpu_integration_test.py
|
| +++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
|
| @@ -81,6 +81,14 @@ class GpuIntegrationTest(
|
| # This is not an expected exception or test failure, so print
|
| # the detail to the console.
|
| exception_formatter.PrintFormattedException()
|
| + # Symbolize any crash dump (like from the GPU process) that
|
| + # might have happened but wasn't detected above. Note we don't
|
| + # do this for either 'fail' or 'flaky' expectations because
|
| + # there are still quite a few flaky failures in the WebGL test
|
| + # expectations, and since minidump symbolization is slow
|
| + # (upwards of one minute on a fast laptop), symbolizing all the
|
| + # stacks could slow down the tests' running time unacceptably.
|
| + self._SymbolizeUnsymbolizedMinidumps()
|
| # This failure might have been caused by a browser or renderer
|
| # crash, so restart the browser to make sure any state doesn't
|
| # propagate to the next test iteration.
|
| @@ -128,6 +136,25 @@ class GpuIntegrationTest(
|
| logging.warning(
|
| '%s was expected to fail, but passed.\n', test_name)
|
|
|
| + def _SymbolizeUnsymbolizedMinidumps(self):
|
| + # The fakes used for unit tests don't mock this entry point yet.
|
| + if not hasattr(self.browser, 'GetAllUnsymbolizedMinidumpPaths'):
|
| + return
|
| + i = 10
|
| + if self.browser.GetAllUnsymbolizedMinidumpPaths():
|
| + logging.error('Symbolizing minidump paths: ' + str(
|
| + self.browser.GetAllUnsymbolizedMinidumpPaths()))
|
| + else:
|
| + logging.error('No minidump paths to symbolize')
|
| + while i > 0 and self.browser.GetAllUnsymbolizedMinidumpPaths():
|
| + i = i - 1
|
| + sym = self.browser.SymbolizeMinidump(
|
| + self.browser.GetAllUnsymbolizedMinidumpPaths()[0])
|
| + if sym[0]:
|
| + logging.error('Symbolized minidump:\n' + sym[1])
|
| + else:
|
| + logging.error('Minidump symbolization failed:\n' + sym[1])
|
| +
|
| @classmethod
|
| def GenerateGpuTests(cls, options):
|
| """Subclasses must implement this to yield (test_name, url, args)
|
|
|