apport (0.70) feisty; urgency=low . [ Martin Pitt ] * bin/apport-retrace: Add option --remove-tag to remove a Launchpad bug tag. This is intended for an automatic Malone crash retracing system. * debian/control: Bump python-launchpad-bugs dependency to ensure that we have Bug.[gs]et_metadata(). * man/apport-retrace.1: Add documentation for --confirm and --remove-tag. * bin/apport-chroot: Add option --remove-tag and pass it to apport-retrace. * apport/chroot.py, fix_symlinks(): Convert chroot path prefixed absolute symlinks to relative symlinks to avoid fakechroot's weird handling of absolute symlinks. * Add bin/launchpad-crash-digger: Daemon for watching out for need-$ARCH-retrace tagged Ubuntu bugs in Launchpad and calling apport-retrace on them. * bin/apport-retrace: Mangle bug comment with StacktraceTop to not contain invalid UTF-8, to avoid getting Internal Server Errors from LP. * debian/local/setup-apport-retracer: Install libc6-i686{,-dbgsym} into an x86 chroot, to get sane x86 backtraces for crashes in libc. * debian/local/setup-apport-retracer: - Unpack and install python-launchpad-bugs locally if the package is not installed. - Link launchpad-crash-digger into the retracer's bin/ dir. * run-tests: Run tests with python's -tt flag to catch whitespace errors. * Replace tabs with spaces in all Python files. (LP: #93561) * Remove trailing white space in all Python files. * apport/report.py, add_proc_info(): Do not regard symlinks to executables as interpreted scripts any more (such as Debian alternatives). Add test case. (LP: #94732) * problem_report.py: Add new method get_new() which returns a set of all keys which have been added since load() or construction. Add test cases. * problem_report.py: Add optional parameter only_new to write(), which writes only the get_new() keys. Add test case. * apport/ui.py: Remember currently processed report file and update it with the added information, so that it becomes useful for local evaluation, too. Bump python-problem-report dependency to ensure write()'s only_new availability. (LP: #94678) * apport-chroot: Add forgotten sys.exit(1) after printing the error message about an invalid chroot specification. * apport/ui.py, run_crash(): Check for a field "UnsupportableReason: " and display an information box that the current configuration cannot be supported because of , instead of processing and reporting the crash. Add test case for this workflow. With special regards to our Firefox crash triagers who want to get rid of the hundreds of flash-related crashes. :) * apport/report.py, add_hooks_info(): Use execfile() instead of __import__(), since package names might conflict with module names already imported into apport's namespace. Also search for hook named after the source package name (prefixed with 'source_'). Add test cases. * bin/apport-chroot: When specifying --save for login, only save the tarball if the exit status is 0. * bin/apport-chroot, create: Install /usr/sbin/policy-rc.d to disable init scripts. * bin/apport-chroot: Fixed command function selection to not abort with 'unknown command' if the DistroRelease: was unknown. * bin/apport-retrace: Replace --no-purge with --no-dpkg. With this option, do not call dpkg --unpack any more, but dpkg -x, to avoid any fchmod() and other calls which cause problems in fakechroots. * bin/apport-retrace: Fix ordering of version numbers in warning message. * doc/package-hooks.txt: Add some examples, document source package hook. . [ Kees Cook ] * apport/report.py, add_proc_info(): If reading /proc/pid/maps fails, ptrace() the target process to make it readable (proposed security improvement in future kernels). * bin/apport-retrace: Fix crash for packages unknown to the apt cache. * apport/report.py, add_gdb_info(): Limit maximum backtrace depth to 2000 to avoid infinitely looped stacks and gdb crashes. (LP: #94455) This also caps the maximum size of information that we add to reports. (LP: #92653) * bin/apport-retrace: Add option -R/--rebuild-package-info, so that apport-retrace works on unprocessed crash dumps in /var/crash. * Some grammar corrections. * Add package-hooks/source_apport.py: Package hook for apport itself. Include /var/log/apport.log and the status of files in /var/crash. . [ Michael Hofmann ] * Add cli/apport-cli, setup.py, debian/apport-cli.install, debian/control: Add command line user interface. * apport/ui.py, format_filesize(): Use MiB and GiB instead of MB and GB; these are the official units. Adapt test cases. * apport/ui.py, collect_info()/file_report(): Do not raise an exception on KeyboardInterrupt in the subthreads. * apport/ui.py, open_url(): Do not use gtk.MessageDialog(), but ui_error_message(), and fix error passing so that the message is displayed in the parent thread. * apport/ui.py, open_url(): Check that $DISPLAY is set before considering the KDE/Gnome web browsers.