Comment 6 for bug 81677

Revision history for this message
Martin Pitt (pitti) wrote :

 apport (0.45) feisty; urgency=low
 .
   New feature: Infrastructure for package install/upgrade failures:
 .
   * Add bin/package_hook: Script for creating a report for a package
     installation/upgrade failure. It receives a package name, a number of log
     files, and an ErrorMessage: from stdin. This will be called from e.g.
     dist-upgrader.
   * setup.py, debian/apport.install: Ship package_hook.
   * apport/ui.py: If ProblemType is 'Package', call a new function
     self.ui_present_package_error() instead of presenting a crash. Add test
     suite checks for the package error report workflow.
   * apport/ui.py, create_crash_bug_title(): Create default bug title for
     package reports. Add various test cases.
   * gtk/apport-gtk{,.glade}: GTK implementation of ui_present_package_error().
 .
   New feature: Maintain a per-binary blacklist to inhibit apport crash reports
   until the binary changes. Closes: LP#79408
 .
   * apport/report.py: Add new Report methods check_ignored() and mark_ignore()
     to check for/set ignore list entries. Add test cases.
   * apport/ui.py: Add another return value of ui_present_crash() to specify
     whether or not to blacklist the current crash's executable. Check workflow
     of both responses in the test suite.
   * gtk/apport-gtk{,.glade}: Add a blacklist checkbox to the crash
     notification dialogs.
   * bin/apport: Do nothing if the current crash is blacklisted.
   * test-apport: Test blacklisting.
 .
   Bug fixes:
 .
   * gtk/apport-gtk: Fix return code for restarting the application ('reopen' ->
     'restart'). Closes: LP#81422
   * test-apport: Adapt to new core_pattern kernel interface mode:
     - Check core_pattern instead of the obsolete crashdump sysctl to determine
       whether or not apport is running.
     - Give apport max. 10 seconds to complete. The current kernel reaps the
       crashed process as soon as writing the core dump to the pipe is
       finished, but apport still needs to write the report file.
     - Do not EXFAIL the test for crashes in nonwriteable cwd any more, since
       it is now supposed to work (we do not write a core dump to the disk any
       more).
   * run-tests, use-local: Adapt to new core_pattern kernel interface.
   * apport: Improve logging of exceptions, include environment variables.
   * apport/report.py test suite: Use gdb to generate a test core dump, do not
     rely on kill(SIGSEGV) and the kernel to do it (since we now use a pipe in
     core_pattern).
   * backends/packaging-dpkg.py: Fix return value of get_modified_files() if
     dpkg .list file is missing.
   * apport/report.py, add_package_info(): Do not produce stray empty lines for
     uninstalled alternative dependencies.
   * apport/report.py: Fix test_add_gdb_info_script() to not leave behind a
     stray gzip process which randomly blocks stdin. Closes: LP#78421
   * backends/packaging-dpkg.py: Do not read the dpkg status in the
     constructor, but lazily initialize it when actually calling a query
     function. This avoids imposing the dpkg-query overhead for programs that
     import the apport package without doing package queries (such as any
     Python program under Ubuntu, due to the Python crash hook).
   * apport/ui.py, create_crash_bug_title():
     - Do not crash on an empty StacktraceTop. Closes: LP#81677
     - Do not mention an unknown function name ('??') in the bug title;
       instead, use the topmost function with a known name, or leave it out
       at all.
     - Add test cases for these situations.
   * apport/report.py, _get_ignore_dom(): Do not throw an error for an empty
     ignore list file.
 .
   Code cleanups:
 .
   * apport/report.py test suite: Refactorize generation of test crash program
     and core dump generation.
   * Consistently use 'in'/'not in' instead of find() for substring searches.
   * Changed the packaging backend import, so that its methods can now be
     accessed at apport.packaging instead of apport.packging.impl.