error in writing core file leaves temporary core in /tmp

Bug #397945 reported by Tommi Komulainen
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
apport (Ubuntu)
Fix Released
Low
Martin Pitt

Bug Description

Binary package hint: apport

apport 0.108.4

In apport/report.py (Report.add_gdb_info):

            if hasattr(self['CoreDump'], 'find'):
                (fd, core) = tempfile.mkstemp()
                os.write(fd, self['CoreDump'])
                os.close(fd)
                unlink_core = True
            elif hasattr(self['CoreDump'], 'gzipvalue'):
                (fd, core) = tempfile.mkstemp()
                os.close(fd)
                self['CoreDump'].write(open(core, 'w'))
                unlink_core = True
            else:
                core = self['CoreDump'][0]

if an exception is thrown before unlink_core is set to True the possibly (almost) fully written temporary core file will be left in /tmp

In my case a SIGSEGV to xulrunner-bin was causing the following exception:

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/apport/report.py", line 411, in add_gdb_info
    self['CoreDump'].write(open(core, 'w'))
  File "/usr/lib/python2.5/site-packages/problem_report.py", line 67, in write
    block = gz.read(1048576)
  File "/usr/lib/python2.5/gzip.py", line 227, in read
    self._read(readsize)
  File "/usr/lib/python2.5/gzip.py", line 275, in _read
    self._read_eof()
  File "/usr/lib/python2.5/gzip.py", line 311, in _read_eof
    raise IOError, "CRC check failed"

Revision history for this message
Tommi Komulainen (tommi-komulainen) wrote :
Revision history for this message
Martin Pitt (pitti) wrote :

Nice catch, thanks! Applied to trunk r1541.

Changed in apport (Ubuntu):
assignee: nobody → Martin Pitt (pitti)
importance: Undecided → Low
status: New → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.3 KiB)

This bug was fixed in the package apport - 1.8.1-0ubuntu1

---------------
apport (1.8.1-0ubuntu1) karmic; urgency=low

  * New upstream bug fix release:
    - data/general-hooks/generic.py: Check $HOME, not /home for enough space.
      (LP: #422658)
    - launchpad.py: Intercept httplib2.ServerNotFoundError as well, to avoid
      crashes when being offline. (LP: #396276)
    - apport-cli: Save reports with .apport extension instead of .txt. Thanks
      to Steve Beattie! (LP: #401983)
    - fileutils.py, likely_packaged(): Ignored crashes in /var, packages don't
      ship executables there, and it creates false positives. (LP: #414368)
    - packaging-apt-dpkg.py, get_modified_files(): Fix crash with empty lines.
      (LP: #408280)
    - packaging-apt-dpkg.py: Use installed version instead of candidate
      version where appropriate. This also fixes a crash where an obsolete
      package is not available any more. (LP: #423511)
    - hookutils.py, attach_gconf(): Fix crash with keys which do not have a
      schema default. (LP: #422277)
    - launchpad.py: Remove LP #353805 workaround, seems fixed now.
    - launchpad.py: Talk to staging if $APPORT_STAGING is set.
    - launchpad.py: Explicitly supply content_type for addAttachment, current
      wadllib requires it now.
    - apport_python_hook.py: Paper over inexplicable import error.
      (LP: #348250)
    - apport_python_hook.py: Protect against nonexisting sys.argv.
      (LP: #418051)
    - apport/ui.py, load_report(): Check that report has ProblemType field.
      (LP: #198543)
    - ui.py: Fix handling of complete vs. reduced report size. (LP: #92653).
      This also fixes a race condition crash with os.path.getsize().
      (LP: #348137)
    - fi.po: Fix mistranslation of "&Cancel". (LP: #355303)
    - apport-{gtk,kde}: Check for having $DISPLAY at startup to avoid crashes.
      (LP: #411276)
    - report.py, add_gdb_info(): Fix race condition in unlink_core, thanks to
      Tommi Komulainen! (LP: #397945)
    - ui.py, load_report(): Robustify check whether program is still
      installed. (LP: #329184)
    - packaging-apt-dpkg.py, install_retracing_packages(): Install package for
      ExecutablePath/InterpreterPath if missing; this can happen with package
      hooks which reassing package
    - launchpad.py: Add a comment when marking a bug as a duplicate.
      (LP: #418871)
  * Move gdb dependency from apport to GUI packages to avoid pulling in gdb on
    Ubuntu server. Thanks to Steve Beattie! (LP: #354172)
  * ubuntu-bug: Fix handling of .crash file arguments, thanks to Marco
    Rodrigues for pointing this out! (LP: #422881)
  * debian/local/apport-collect: Set content_type and description, wadllib
    requires them now. (LP: #423512) Also drop the ASCII reencoding
    workaround, this doesn't seem to be necessary any more.
  * apport/hookutils.py, attach_conffiles(): Fix crash with obsolete
    conffiles. (LP: #412132)
  * debian/local/apport-collect: Do not upload data if the affected package
    isn't installed and there is no source package hook available either.
    (LP: #417277)
  * debian/local/ubuntu-bug: Accept .apport extension, too; thanks to Steve
    ...

Read more...

Changed in apport (Ubuntu):
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.