canonical-certification-server crashes with "Not a gzipped file" error

Bug #1511426 reported by Rod Smith
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
PlainBox (Toolkit)
Fix Released
Critical
Sylvain Pineau

Bug Description

I've run into this twice today: After canonical-certification-server finishes its run and is told to submit results, it crashes with the following output:

CRITICAL plainbox.crashes: Executable 'checkbox-launcher' invoked with Namespace(color=None, command=<checkbox_ng.commands.launcher.LauncherCommand object at 0x7f97789762b0>, debug_console=False, debug_interrupt=False, dont_suppress_output=False, dry_run=False, exclude_pattern_list=[], include_pattern_list=[], launcher='/usr/bin/canonical-certification-server', log_level=None, non_interactive=False, pdb=False, secure_id=None, test_plan=None, trace=[], url=None, whitelist=[]) has crashed
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/plainbox/impl/clitools.py", line 560, in dispatch_and_catch_exceptions
    return self.dispatch_command(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/clitools.py", line 556, in dispatch_command
    return ns.command.invoked(ns)
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/launcher.py", line 90, in invoked
    self.provider_loader, lambda: self.config, ns, launcher
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 149, in run
    return self.do_normal_sequence()
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 211, in do_normal_sequence
    self.export_and_send_results()
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 366, in export_and_send_results
    exporter.dump_from_session_manager(self.manager, stream)
  File "/usr/lib/python3/dist-packages/plainbox/impl/exporter/jinja2.py", line 179, in dump_from_session_manager
    self.dump(data, stream)
  File "/usr/lib/python3/dist-packages/plainbox/impl/exporter/jinja2.py", line 156, in dump
    self.template.stream(data).dump(stream, encoding='utf-8')
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1164, in dump
    fp.writelines(iterable)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1160, in <genexpr>
    iterable = (x.encode(encoding, errors) for x in self)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1208, in __next__
    return self._next()
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1013, in generate
    yield self.environment.handle_exception(exc_info, True)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3/dist-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/plainbox/impl/providers/exporters/data/hexr.xml", line 73, in top-level template code
    {{ result.io_log_as_flat_text }}
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 408, in getattr
    return getattr(obj, attribute)
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 415, in io_log_as_flat_text
    'UTF-8', 'replace'))
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 412, in <genexpr>
    CONTROL_CODE_RE_STR.sub('', text_chunk)
  File "/usr/lib/python3.4/codecs.py", line 1034, in iterdecode
    for input in iterator:
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 414, in <genexpr>
    (record.data for record in self.get_io_log()),
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 515, in get_io_log
    for record in IOLogRecordReader(stream):
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 583, in __iter__
    record = self.read_record()
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 568, in read_record
    text = self.stream.readline()
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 490, in read1
    return self.read(n)
  File "/usr/lib/python3.4/gzip.py", line 365, in read
    if not self._read(readsize):
  File "/usr/lib/python3.4/gzip.py", line 433, in _read
    if not self._read_gzip_header():
  File "/usr/lib/python3.4/gzip.py", line 297, in _read_gzip_header
    raise OSError('Not a gzipped file')
OSError: Not a gzipped file
Traceback (most recent call last):
  File "/usr/bin/checkbox-launcher", line 9, in <module>
    load_entry_point('checkbox-ng==0.21', 'console_scripts', 'checkbox-launcher')()
  File "/usr/lib/python3/dist-packages/checkbox_ng/main.py", line 62, in launcher
    raise SystemExit(CheckboxLauncherTool().main(argv))
  File "/usr/lib/python3/dist-packages/plainbox/impl/clitools.py", line 324, in main
    return self.dispatch_and_catch_exceptions(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/clitools.py", line 560, in dispatch_and_catch_exceptions
    return self.dispatch_command(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/clitools.py", line 556, in dispatch_command
    return ns.command.invoked(ns)
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/launcher.py", line 90, in invoked
    self.provider_loader, lambda: self.config, ns, launcher
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 149, in run
    return self.do_normal_sequence()
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 211, in do_normal_sequence
    self.export_and_send_results()
  File "/usr/lib/python3/dist-packages/checkbox_ng/commands/newcli.py", line 366, in export_and_send_results
    exporter.dump_from_session_manager(self.manager, stream)
  File "/usr/lib/python3/dist-packages/plainbox/impl/exporter/jinja2.py", line 179, in dump_from_session_manager
    self.dump(data, stream)
  File "/usr/lib/python3/dist-packages/plainbox/impl/exporter/jinja2.py", line 156, in dump
    self.template.stream(data).dump(stream, encoding='utf-8')
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1164, in dump
    fp.writelines(iterable)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1160, in <genexpr>
    iterable = (x.encode(encoding, errors) for x in self)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1208, in __next__
    return self._next()
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1013, in generate
    yield self.environment.handle_exception(exc_info, True)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3/dist-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/plainbox/impl/providers/exporters/data/hexr.xml", line 73, in top-level template code
    {{ result.io_log_as_flat_text }}
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 408, in getattr
    return getattr(obj, attribute)
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 415, in io_log_as_flat_text
    'UTF-8', 'replace'))
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 412, in <genexpr>
    CONTROL_CODE_RE_STR.sub('', text_chunk)
  File "/usr/lib/python3.4/codecs.py", line 1034, in iterdecode
    for input in iterator:
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 414, in <genexpr>
    (record.data for record in self.get_io_log()),
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 515, in get_io_log
    for record in IOLogRecordReader(stream):
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 583, in __iter__
    record = self.read_record()
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 568, in read_record
    text = self.stream.readline()
  File "/usr/lib/python3/dist-packages/plainbox/impl/result.py", line 490, in read1
    return self.read(n)
  File "/usr/lib/python3.4/gzip.py", line 365, in read
    if not self._read(readsize):
  File "/usr/lib/python3.4/gzip.py", line 433, in _read
    if not self._read_gzip_header():
  File "/usr/lib/python3.4/gzip.py", line 297, in _read_gzip_header
    raise OSError('Not a gzipped file')
OSError: Not a gzipped file

This was from a run on Ubuntu 15.10. The ~/.local/share/plainbox directory has a single file, submission.xml. Attempting to submit it with canonical-certification-submit seems to succeed, but the status URL reports an error:

https://certification.canonical.com/submissions/status/17345

I'm attaching the ~/.cache and ~/.local directory trees from this run.

Related branches

Revision history for this message
Rod Smith (rodsmith) wrote :
Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :
Changed in plainbox-provider-checkbox:
assignee: nobody → Sylvain Pineau (sylvain-pineau)
milestone: none → 0.23
affects: plainbox-provider-checkbox → plainbox
Changed in plainbox:
milestone: 0.23 → none
milestone: none → 0.24
status: New → In Progress
importance: Undecided → Critical
Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

Fix the linked branch fix, I'm able to succesfully export the xml file. Please use it to retry submitting your results to C3

Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

Fix the linked branch fix, I'm able to successfully export the xml file. Please use it to retry submitting your results to C3

Changed in plainbox:
status: In Progress → Fix Committed
Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

A bit of explanation for this bug, I've started to suspect a problem in python instead of plainbox because manually extracting the .record file from the archive worked:

    gunzip -k -v 2013.com.canonical.certification__ethernet_multi_nic_eth1.record.gz

but with the following warning:

    decompression OK, trailing garbage ignored

With the fix the export command succeeded:

    plainbox session export -f xml -o /tmp/1511426.xml pbox-o8sjwx9f

Pierre Equoy (pieq)
Changed in plainbox:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.