Public bug reported:

I'm a Python developer. After upgrading to Feisty, an ImportError seems
to have triggered a hook in /var/lib/python-
support/python2.4/apport_python_hook.py. This then calls into /var/lib
/python-support/python2.4/apport/report.py. This is a lot of code. I am
rather shocked to see that a simple uncaughed Python exception on Ubuntu
now has such a large side effect. Especially since this code actually
has a bug in it.

Write a Python script foo.py with the following content:

import doesntexist

Then do chmod +x on it. It appears this triggers your error handling
code, as this assumes the Python is an OS-installed executable. Then run
it using python2.4.

You'll get an error like this:

Traceback (most recent call last):
  File "foo.py", line 1, in ?
    import doesntexist
ImportError: No module named doesntexist
Error in sys.excepthook:
Traceback (most recent call last):
  File "/var/lib/python-support/python2.4/apport_python_hook.py", line 54, in 
apport_excepthook
    pr.add_proc_info()
  File "/var/lib/python-support/python2.4/apport/report.py", line 334, in 
add_proc_info
    self._check_interpreted()
  File "/var/lib/python-support/python2.4/apport/report.py", line 244, in 
_check_interpreted
    if not any([fnmatch.fnmatch(exebasename, i) for i in interpreters]):
NameError: global name 'any' is not defined

Original exception was:
Traceback (most recent call last):
  File "foo.py", line 1, in ?
    import doesntexist
ImportError: No module named doesntexist

>From eyeballing the exception, it's likely that the apport code was
written with Python 2.5, which defines 'any', and that this behavior was
never tested against Python 2.4.

Having a such heavy-handed exception hook is pretty bad news for me. My
build tools (zc.buildout) generate Python scripts with the executable
flag set all the time, and now I have Ubuntu's error handling to worry
about, which isn't starting out by inspiring a lot of confidence. I can
see what you're trying to accomplish here, but perhaps there is a better
way? Only let the hook kick in for executable scripts that are installed
under /usr, perhaps?

Me, I will be compiling and installing my own Python 2.4 interpreter in
my user directory for the time being.

** Affects: Ubuntu
     Importance: Undecided
         Status: Unconfirmed

-- 
apport uses any() in python2.4
https://bugs.launchpad.net/bugs/109391
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to