catapult-project / catapult

Deprecated Catapult GitHub. Please instead use http://crbug.com "Speed>Benchmarks" component for bugs and https://chromium.googlesource.com/catapult for downloading and editing source code..
https://chromium.googlesource.com/catapult
BSD 3-Clause "New" or "Revised" License
1.91k stars 562 forks source link

Telemetry can die with an unknown encoding exception when updating an HTML file #4615

Open pcc opened 5 years ago

pcc commented 5 years ago

This happened today (at the end of a test run, after having completed two runs successfully) and the results weren't written to disk. Fortunately I was able to recover some results from terminal scrollback. It isn't immediately obvious what the cause of the exception is, it looks like beautifulsoup is throwing this exception while creating an empty object?

It looks like this code path is only reached when adding results to an existing html file. For now I'll work around the problem by writing the result of each run to a separate file.

Traceback (most recent call last):
  <module> at /usr/local/google/home/pcc/c2/src/tools/perf/run_benchmark:27
    sys.exit(main())
  main at /usr/local/google/home/pcc/c2/src/tools/perf/run_benchmark:23
    return benchmark_runner.main(config, [trybot_command.Trybot])
  main at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/benchmark_runner.py:456
    return command_instance.Run(options)
  Run at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/benchmark_runner.py:326
    return min(255, b.Run(args))
  Run at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/benchmark.py:105
    return story_runner.RunBenchmark(self, finder_options)
  RunBenchmark at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/internal/story_runner.py:447
    results.PrintSummary()
  PrintSummary at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/internal/results/page_test_results.py:625
    output_formatter.Format(self)
  Format at /usr/local/google/home/pcc/c2/src/third_party/catapult/telemetry/telemetry/internal/results/html_output_formatter.py:28
    histograms, self._output_stream, self._reset_results)
  VulcanizeAndRenderHistogramsViewer at /usr/local/google/home/pcc/c2/src/third_party/catapult/tracing/tracing_build/vulcanize_histograms_viewer.py:27
    VulcanizeHistogramsViewer())
  VulcanizeHistogramsViewer at /usr/local/google/home/pcc/c2/src/third_party/catapult/tracing/tracing_build/vulcanize_histograms_viewer.py:20
    return generate.GenerateStandaloneHTMLAsString(load_sequence)
  GenerateStandaloneHTMLAsString at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py:201
    GenerateStandaloneHTMLToFile(f, *args, **kwargs)
  GenerateStandaloneHTMLToFile at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py:260
    module.AppendHTMLContentsToFile(output_file, controller, minify=minify)
  AppendHTMLContentsToFile at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/html_module.py:72
    for piece in self._parser_results.YieldHTMLInPieces(ctl, minify=minify):
  YieldHTMLInPieces at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py:193
    yield self.GenerateHTML(controller, minify)
  GenerateHTML at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py:196
    soup = _CreateSoupWithoutHeadOrBody(unicode(self._soup))
  _CreateSoupWithoutHeadOrBody at /usr/local/google/home/pcc/c2/src/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py:133
    soup = bs4.BeautifulSoup()
  __init__ at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/beautifulsoup4/bs4/__init__.py:196
    self._feed()
  _feed at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/beautifulsoup4/bs4/__init__.py:210
    self.builder.feed(self.markup)
  feed at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/beautifulsoup4/bs4/builder/_html5lib.py:37
    doc = parser.parse(markup, encoding=self.user_specified_encoding)
  parse at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/html5parser.py:236
    parseMeta=parseMeta, useChardet=useChardet)
  _parse at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/html5parser.py:89
    parser=self, **kwargs)
  __init__ at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/tokenizer.py:40
    self.stream = HTMLInputStream(stream, encoding, parseMeta, useChardet)
  HTMLInputStream at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/inputstream.py:148
    return HTMLBinaryInputStream(source, encoding, parseMeta, chardet)
  __init__ at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/inputstream.py:436
    self.reset()
  reset at /usr/local/google/home/pcc/c2/src/third_party/catapult/third_party/html5lib-python/html5lib/inputstream.py:439
    self.dataStream = codecs.getreader(self.charEncoding[0])(self.rawStream,
  getreader at /usr/local/google/home/pcc/.vpython-root/eea670/lib/python2.7/codecs.py:999
    None
LookupError: unknown encoding: windows-1252
benshayden commented 5 years ago

Can you see if you can import encodings.cp1252 in a python repl? [similar issue]