lp:ubuntu/edgy/apport

Created by Ubuntu Package Importer and last modified
Get this branch:
bzr branch lp:ubuntu/edgy/apport
Members of Ubuntu branches can upload to this branch. Log in for directions.

Related bugs

Related blueprints

Branch information

Owner:
Ubuntu branches
Review team:
Ubuntu Development Team
Status:
Development

Recent revisions

28. By Martin Pitt

"No coreignore!"

apport: Do not create a report for crashes which we do not get a core dump
for. The reports are useless and only clutter our bug tracker.

27. By Martin Pitt

* apport: Ignore SIGABRT for now; it's usually signalled from abort() or
  assertion failures and we only get reports with unusable stack traces for
  it (see #61938).
* gtk/apport-gtk: If gnome-open is not available, fall back to x-www-browser
  instead of using webbrowser.py, to respect default browser in XFCE.
  Closes: LP#64209
* apport: use os.nice() instead of executing 'renice'. Thanks to Benoit
  Boissinot for noticing.
* apport_utils.py, find_file_package(): Lower() both strings in the speedup
  heuristics to match e. g. /usr/bin/Xorg -> xserver-xorg. Thanks to Kees
  Cook!
* apport_utils.py, report_add_package_info(): Do not crash if we encounter a
  'None' current version, which can happen with uninstalled alternative
  dependencies. Thanks to Kees Cook for tracking this down!

26. By Martin Pitt

* apport-retrace: Clean up code a bit:
  - Move option parsing to separate function.
  - Use apport_utils' report_add_gdb_info() instead of duplicating the gdb
    code.
* apport_utils.py, report_add_gdb_info(): Add optional parameter 'debugdir'
  to specify an alternate debug file symbol root directory.
* apport-retrace: Add option -d/--download-debug to automatically download
  available ddebs, create a temporary debug symbol directory from already
  installed and downloaded ddebs, and point gdb to use that. Also add option
  -C/--cache-dir to specify a permanent ddeb cache directory (by default, a
  temporary one is used). Update the manpage accordingly.
* apport-retrace: Make the best out of a report without packaging
  information (which can happen if the user does not click on 'report bug'
  in apport-gtk).
* apport_utils, report_add_proc_info():
  - Move heuristics for detecting interpreted scripts to a separate function
    to be able to provide separate test cases for it. Check a few more
    special cases for mono programs.
  - Make interpreter heuristics even scarier to detect some more mono corner
    cases (like banshee and beagled-helper). Closes: LP#58859

25. By Martin Pitt

* Drop apport-gtk's update-notifier dependency to a Recommends:.
* apport_utils.py, report_add_gdb_info(): Add register dump and disassembly
  of the last 32 bytes, they might be useful to see what's going on
  sometimes. Thanks to Kees Cook for the idea and the patch.
* test-apport, check_crash(): Verify that a crash does not leave a core file
  behind. (Test for LP#62972)
* preloadlib/libapport.c: Do not unlink the core file after calling apport,
  but set REMOVE_CORE=1 environment instead. This matches the current
  kernel behaviour.
* apport: Register an atexit handler as early as possible for unlinking the
  core dump if REMOVE_CORE environment is set. Closes: LP#62972
* apport: Set nice level 10 instead of 5. Closes: LP#63099

24. By Martin Pitt

The "Need for speed" release -- rrrroarrr!

* apport: Remove _copy_shrink_corefile(): While this has an enormous impact
  on the size of an uncompressed core dump, it only causes a negligible size
  reduction of the bzip2'ed core, but it needs a lot of I/O resources for
  large core dumps.
* problem_report.py:
  - Use zlib instead of bzip2 for compressing the binary data (in
    particular, core dumps). This results in slightly bigger files, but speeds
    up compression a lot (30 seconds vs. ~2:45 minutes for a Firefox core dump
    on my slow iBook). Closes: LP#61538
  - ProblemReport.read(): Support both bzip2 and zlib compression to be able
    to read existing reports, too.
  - Add/Adapt test cases.
* Move InformationCollector._get_gdb() from apport to apport_utils.py
  report_add_gdb_info(), and add a test case for it.
* apport_utils.py, report_add_package_info(): Support calling without a
  package name, then it will be figured out from ExecutableName. Extend test
  case accordingly.
* test-apport: Do not require apport reports to contain gdb, packaging, and
  OS information, since we are going to move them out of apport.
* apport: Do not collect static information. It requires a lot of CPU and
  I/O resources and slows down the machine a lot, and it can be added to
  the report later in the frontend. This also gets rid of the entire
  InformationCollector class, since everything has been moved to
  apport_utils.py now. Closes: LP#62542
* apport: Do not intercept KeyboardInterrupt as unhandled exception (only
  useful for command line debugging, though).
* problem_report.py: Add test case for appending new data to an existing
  report, fix write() function to not rely on an existing ProblemType key.
* problem_report.py: Add new method ProblemReport.add_to_existing() to
  update an already existing problem report with new data. Add test case.
* apport_utils.py, mark_report_seen(): Use os.utime() instead of
  open()/read() and a timeout for simpler and faster operation.
* gtk/apport-gtk:
  - Collect gdb/packaging/operating system information when the user chooses
    to file a bug and update the apport report.
  - Change the 'Downloading bug patterns...' progress dialog to 'Collecting
    information about the crash...'.
* debian/control: Bumped library dependencies of apport-gtk, added
  update-notifer dependency.

23. By Martin Pitt

* apport: Reset signal handler to SIG_IGN in the crash signal handler, to
  avoid an endless crash/handler loop (noticed during debugging LP#61708).
* debian/apport.init: Do not let the script run with set -e, so that
  do_{start,stop} can deliver their return codes for proper evaluation,
  instead of immediately existing. Closes: LP#61796
* test-apport: Check that SIGQUIT does not generate a report. (Check for
  bug #62511).
* apport: Ignore SIGQUIT. Closes: LP#62511

22. By Martin Pitt

* apport_utils.py, report_add_proc_info(): Make 'interpreted script'
  detection more general to also work for mono programs.
* test-apport: Check that non-packaged scripts do not generate a report.
* apport: Call ic.collect_runtime_information() earlier and drop the local
  /proc/pid/exe examination, so that we get proper script detection. This
  avoids getting crash reports for non-packaged scripts (see test case
  change from above).
* apport: Do not try to chmod the report file if we could not create it and
  output to stderr instead (this mainly affects local testing only).
* apport_utils.py, find_file_package(): First grep the package lists whose
  names are a substring of the crashed binary name (or vice versa), to
  immensely speed up the package name determination in many cases.
* apport: Drop the maximum number of consecutive crashes per executable
  from 5 to 2. 5 creates a too bad user experience and creates the
  impression that it will never stop. Closes: LP#61078

21. By Martin Pitt

* apport: Keep a partially written report with '000' permissions, and only
  chmod it to 0600 when it is fully written. This stops update-notifier from
  picking up half-written reports and get activated several times.
  Closes: LP#59988
* apport: Add the executable path to the first line of logging.
* apport: Run the complete code under control of the general exception
  fallback handler.
* debian/apport.default: Increase maximum core size to 200 MB, to also catch
  Firefox and Evolution core dumps.
* apport_utils.py, find_file_package(): Before searching the dpkg database
  (which is expensive), check if the executable path matches a whitelist of
  path prefixes. This replaces the weaker blacklist (/tmp and /home) in
  apport itself.
* gtk/apport-gtk: Show a progress dialog while checking for bug patterns and
  execute report_search_bug_patterns() in a separate thread, so that the UI
  is not potentially blocked for a long time.
* apport: Gracefully abort if we cannot readlink /proc/pid/exe, instead of
  falling over with an exception. Closes: LP#59993
* debian/rules: Use 'multiuser' instead of 'defaults' for dh_installinit.
  Clean up the unnecessary rc symlinks in postinst and add appropriate
  sysv-rc dependency.

20. By Martin Pitt

* apport: Renice ourself to priority 5 to not slow down the user's processes
  so heavily.
* Add manpages for apport-retrace(1) and apport-unpack(1) and install them
  into apport. Closes: LP#58463
* problem_report.py: Test attaching two files instead of one in the
  test_write_file() regression check to assert correct key sorting.
* problem_report.py: Alter write() method to sort binary data to the end of
  the report. This makes reports easier to read, and also shows relevant
  information more quickly when progressively loading them in a web browser.
  Adapt regression tests accordingly.
* Move setting of ExecutablePath from apport's InformationCollector ctor to
  apport_utils' report_add_proc_info(), where it belongs to. Check
  ExecutablePath in apport_utils' regression tests.
* apport-unpack: Support '-' as report argument to read from stdin.
* apport_utils.py, report_add_proc_info():
  - Apply some heuristics to determine whether the crashed process is an
    interpreted script (check if the Name in /proc/pid/status matches
    the second /proc/pid/cmdline part, and if that command line argument is
    an existing executable file). In the case of an interpreted script, set
    ExecutablePath to the script and InterpreterPath to the actually crashed
    ELF binary.
  - Test this with a shell (/bin/zgrep) and a Python (./apport-unpack)
    script in the test suite.
  - Closes: LP#58859
* Add debian/apport.logrotate to add a daily 7-step /var/log/apport
  log rotation.
* test-apport: Fix WCOREDUMP() and pidof checks in check_crash().
* apport: Install a signal handler for all 'crashy' signals, which just logs
  the signal and stack info and exits. This should avoid a crashing apport
  examining itself, possibly in an endless loop. Closes: LP#58873

19. By Martin Pitt

* apport_utils.py: Add function report_search_bug_patterns(): Try to
  download a package specific bug pattern XML file from a given URL base
  directory and return the bug URL in case of a match. Also add extensive
  test suite check.
* test-apport: Fix help message.
* apport-gtk: Make use of the new report_search_bug_patterns() function and
  display appropriate instructions on match. Bump python-apport-utils dependency.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:ubuntu/quantal/apport
This branch contains Public information 
Everyone can see this information.

Subscribers