apport_python_hook.py doesn't check to see if apport is enabled

Bug #222260 reported by Brian Murray
8
Affects Status Importance Assigned to Milestone
apport (Ubuntu)
Fix Released
Medium
Martin Pitt
Hardy
Fix Released
Medium
Martin Pitt

Bug Description

Binary package hint: apport

1) Hardy Heron
2) Installed: 0.108
3) python crashes not to show up in Launchpad for Hardy Heron any more
4) I found bug 222217

The changelog for apport 0.108 states:
  * debian/apport.default: Disable Apport for the final Hardy release, since
    it is less useful in stable releases, and drains a lot of CPU and I/O
    power on crashes. Disabling it here instead of in update-notifier/adept is
    more discoverable and more centralized.

However, apport_python_hook.py doesn't check that file before reporting bugs so python crashes continue to be reported.

TEST CASE:
  1. Introduce a bug into a Python program (or find an existing crash):

    sudo sed -i '2 s/^/assert False/' /usr/bin/lsb_release

  2. Run "lsb_release" in a Terminal.

With current Hardy you will get an Apport crash notification. With the hardy-proposed version, you will not get any more if /etc/default/apport disabled apport. If you enable it again, you should get an Apport notification again.

  3. Restore lsb_release again:

  sudo sed -i '2 s/^.*$//' /usr/bin/lsb_release

Revision history for this message
Kees Cook (kees) wrote :

Attaching a branch that fixes this. I note, however, that this is not a very distro-agnostic way to handle it. Perhaps a /var/lib/apport file that /etc/init.d/apport modifies would be "better"?

=== modified file 'apport_python_hook.py'
--- apport_python_hook.py 2008-04-11 21:04:30 +0000
+++ apport_python_hook.py 2008-04-26 01:06:30 +0000
@@ -30,6 +30,15 @@
     # import locally here so that there is no routine overhead on python
     # startup time - only when a traceback occurs will this trigger.
     try:
+ # test if apport is enabled
+ enabled=1
+ try:
+ execfile('/etc/default/apport')
+ except:
+ pass
+ if not enabled:
+ return
+
         # ignore 'safe' exit types.
         if exc_type in (KeyboardInterrupt, ):
             return

Revision history for this message
Kees Cook (kees) wrote :

LP really doesn't like whitespace, does it? :)

Changed in apport:
assignee: nobody → pitti
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
Martin Pitt (pitti) wrote :

Note to self: Kees' patch clobbers the global namespace, it should use and pass a local/global dictionary.

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

Note 2: use a regular expression match instead of execfile(). This is both technically more correct, and probably also much cheaper.

Changed in apport:
status: Triaged → In Progress
Revision history for this message
Kees Cook (kees) wrote : Re: [Bug 222260] Re: apport_python_hook.py doesn't check to see if apport is enabled

On Sat, Apr 26, 2008 at 08:08:15AM -0000, Martin Pitt wrote:
> Note to self: Kees' patch clobbers the global namespace, it should use
> and pass a local/global dictionary.

Owch, really? I thought it defaulted to only messing with the local
namespace? Anyway, yes, mostly it serves as an example. I was digging
around for where python did the apport hooks and figured I'll cook
something up while I was in there. :)

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apport - 0.110

---------------
apport (0.110) intrepid; urgency=low

  * apport/chroot.py: In the test suite, copy some system binaries/libraries
    into a fakechroot and exercise a lot of standard shell commands (cp, ln
    -s, rm, rm -r, mkdir, echo, chmod, chown, etc.) with absolute/relative
    paths. This reproduces the total breakage of rm'ing, chmod'ing, and
    chown'ing absolute paths in hardy fakechroots.
  * bin/crash-digger: Intercept exceptions when downloading crash reports for
    duplicate checking, so that the retracer does not crash on malformed bug
    reports. (LP: #205178)
  * apport/packaging.py: Introduce a new function enabled() which reports
    whether Apport should create crash reports. Signal crashes are controlled
    by /proc/sys/kernel/core_pattern, but we need that to control whether
    reports for Python, package, or kernel crashes are generated.
  * backends/packaging-apt-dpkg.py: Provide implementation for
    PackageInfo.enabled() for Debian/Ubuntu by evaluating /etc/default/apport.
    Add various test cases for different configuration files and absent files.
  * apport_python_hook.py: Do not create reports if Apport is disabled (in
    /etc/default/apport). (LP: #222260)

 -- Martin Pitt <email address hidden> Sat, 17 May 2008 12:44:21 +0200

Changed in apport:
status: In Progress → Fix Released
Revision history for this message
Martin Pitt (pitti) wrote :

For Hardy we need to cherrypick those two revisions from trunk:

  http://bazaar.launchpad.net/~ubuntu-core-dev/apport/ubuntu/revision/1110
     provide the infrastructure for reading /etc/default/apport in a reaonable upstream-compatible manner

  http://bazaar.launchpad.net/~ubuntu-core-dev/apport/ubuntu/revision/1111
     use the new enable() function from above to suppress reports for Python

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

I backported above two changes to the hardy branch: https://code.launchpad.net/~ubuntu-core-dev/apport/hardy . Apart from those, I changed debian/control to have Vcs-Bzr: point to the hardy branch. I uploaded the package to hardy-proposed, awaiting ack from Steve now.

Martin Pitt (pitti)
description: updated
Revision history for this message
Steve Langasek (vorlon) wrote :

Accepted into -proposed, please test and give feedback here

Changed in apport:
status: In Progress → Fix Committed
Revision history for this message
Brian Murray (brian-murray) wrote :

On Hardy with apport package version 0.108.1 I caused a python application to crash and observed an apport crash notification. After installing python-apport and apport version 0.108.2 I no longer observed an apport crash notification. Additionally, after enabling crash reports in /etc/default/apport I continued to receive an apport crash notification with 0.108.2.

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

Copied to hardy-updates.

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