[Bug 1774843] Re: apport python exception handler messes up python3.7

Bart Goeman 1774843 at bugs.launchpad.net
Thu Jun 7 06:57:51 UTC 2018


well my reasoning was slightly different from supported/unsupported
i am not familiar with the exact scope of the apport project,
but I assume the goal is to collect info on ubuntu packages, not any unrelated code,
and since afaik all packages one one release all use the same (system) python version( i.e. 3.6 for bionic),
-> code running under any other python is of no interest anyhow
-> it only makes sense to install the apport exception hook for that python version,

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python-apt in Ubuntu.
https://bugs.launchpad.net/bugs/1774843

Title:
  apport python exception handler messes up python3.7

Status in apport package in Ubuntu:
  New
Status in python-apt package in Ubuntu:
  Invalid

Bug description:
  it seems apport installs an exception hook whenever running python3.
  This hook is apparently installed for python3.7 too.
  This exception handler has a dependency on apt_pkg, which is a binary that is not compatible with python3.7 it seems (you can't import it, see below)

  As a result, whenever I run a python3.7 script and run into an exception (which happens often when writing code), I get an additional exception in the exception handler + a copy of the original exception, so three stacktraces in total.
  A solution would be to only install the exception hook for the system python  i.e. python3.6

  
  $ lsb_release -rd
  Description:	Ubuntu 18.04 LTS
  Release:	18.04

  apport: 2.20.9-0ubuntu7
  python-apt: 1.6.0
  python3.7: 3.7.0~b3-1

  Demo with a trivial error:
  $ python3 -c 'print hello'
    File "<string>", line 1
      print hello
                ^
  SyntaxError: Missing parentheses in call to 'print'. Did you mean print(hello)?

  
  $ python3.7 -c 'print hello'
    File "<string>", line 1
      print hello
                ^
  SyntaxError: Missing parentheses in call to 'print'. Did you mean print(hello)?
  Error in sys.excepthook:
  Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
      from apport.fileutils import likely_packaged, get_recent_crashes
    File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
      from apport.report import Report
    File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
      import apport.fileutils
    File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
      from apport.packaging_impl import impl as packaging
    File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
      import apt
    File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
      import apt_pkg
  ModuleNotFoundError: No module named 'apt_pkg'

  Original exception was:
    File "<string>", line 1
      print hello
                ^
  SyntaxError: Missing parentheses in call to 'print'. Did you mean print(hello)?


  Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
  [GCC 7.3.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import sys
  >>> sys.excepthook
  <function apport_excepthook at 0x7fdf2b99a620>
  >>> import apt_pkg
  >>> apt_pkg.__file__
  '/usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so'
  >>> 

  Python 3.7.0b3 (default, Mar 30 2018, 04:35:22) 
  [GCC 7.3.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import sys
  >>> sys.excepthook
  <function apport_excepthook at 0x7f29a6eebea0>
  >> import apt_pkg
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  ModuleNotFoundError: No module named 'apt_pkg'

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apport/+bug/1774843/+subscriptions



More information about the foundations-bugs mailing list