uncaught TypeError triggers ValueError

Bug #1723822 reported by Scott Palmer
2
Affects Status Importance Assigned to Milestone
Apport
Fix Released
High
Unassigned
apport (Ubuntu)
Fix Released
High
Unassigned
nautilus (Ubuntu)
Fix Released
Low
Unassigned

Bug Description

$ ubuntu-bug nautilus
ERROR: hook /usr/share/apport/package-hooks/source_nautilus.py crashed:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport/report.py", line 198, in _run_hook
    symb['add_info'](report, ui)
TypeError: add_info() takes 1 positional argument but 2 were given

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport/report.py", line 203, in _run_hook
    symb['add_info'](report)
  File "/usr/share/apport/package-hooks/source_nautilus.py", line 23, in add_info
    report["usr_lib_nautilus"] = package_versions(*sorted(plugin_packages))
  File "/usr/lib/python3/dist-packages/apport/hookutils.py", line 785, in package_versions
    map(max, [map(len, t) for t in zip(*versions)])
ValueError: not enough values to unpack (expected 2, got 0)
This tool has been deprecated, use 'gio open' instead.
See 'gio help open' for more info.

$ Created new window in existing browser session.

ProblemType: Bug
DistroRelease: Ubuntu 17.10
Package: apport 2.20.7-0ubuntu3
ProcVersionSignature: Ubuntu 4.13.0-16.19-generic 4.13.4
Uname: Linux 4.13.0-16-generic x86_64
ApportVersion: 2.20.7-0ubuntu3
Architecture: amd64
CrashReports:
 640:121:119:20593327:2017-10-14 08:49:43.994080376 -0700:2017-10-14 08:49:24.682136558 -0700:/var/crash/_usr_bin_gnome-shell.121.crash
 640:0:119:712257:2017-10-13 22:55:49.843941428 -0700:2017-10-13 22:55:48.723911385 -0700:/var/crash/_usr_lib_udisks2_udisksd.0.crash
 640:1000:119:432238:2017-10-14 07:48:01.498643348 -0700:2017-10-14 07:48:00.714643372 -0700:/var/crash/_usr_lib_gvfs_gvfsd-mtp.1000.crash
 664:1000:119:0:2017-10-13 19:55:40.447393054 -0700:2017-10-13 19:55:40.447393054 -0700:/var/crash/_usr_lib_gvfs_gvfsd-mtp.1000.upload
 600:112:119:0:2017-10-13 19:55:42.247460153 -0700:2017-10-13 19:55:42.247460153 -0700:/var/crash/_usr_lib_gvfs_gvfsd-mtp.1000.uploaded
CurrentDesktop: ubuntu:GNOME
Date: Sun Oct 15 17:52:08 2017
InstallationDate: Installed on 2017-10-03 (12 days ago)
InstallationMedia: Ubuntu 17.10 "Artful Aardvark" - Alpha amd64 (20170926)
PackageArchitecture: all
SourcePackage: apport
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Scott Palmer (skewty) wrote :
Changed in apport (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Brian Murray (brian-murray) wrote :

There are two issues here, one with apport and another with nautilus. The nautilus package ships an apport-package hook and it is looking for information about plugins in /usr/lib/nautilus which is not where they are stored anymore.

 12 # collect informations on the /usr/lib/nautilus components
 13 plugin_packages = set()
 14 for dirpath, dirnames, filenames in os.walk("/usr/lib/nautilus"):
 15 for filename in filenames:
 16 path = os.path.join(dirpath, filename)
 17 package = apport.packaging.get_file_package(path)
 18 if package == 'nautilus':
 19 continue

 $ ls /usr/lib/nautilus/
ls: cannot access '/usr/lib/nautilus/': No such file or directory

I think they've moved to /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0. Regardless, the apport package hook from nautilus needs updating.

Changed in nautilus (Ubuntu):
status: New → Triaged
importance: Undecided → High
Revision history for this message
Brian Murray (brian-murray) wrote :

The issue with apport is that if the function package_versions is called in hookutils and packages is empty there is no handling for that so then it ends up crashing when trying to create the map. Once that is fixed apport will continue to produce a problem report even though the nautilus hook is broken.

Changed in apport (Ubuntu):
status: Confirmed → Triaged
importance: Medium → High
Changed in apport:
status: New → Fix Released
importance: Undecided → High
Changed in nautilus (Ubuntu):
assignee: nobody → Canonical Desktop Team (canonical-desktop-team)
Revision history for this message
Sebastien Bacher (seb128) wrote :

Right, the nautilus multiarch dir is known, it's a minor issue but should be fixed (does apport provide an easy way to get the multiarch dir from a hook?)

Lowering and unassigning from the canonical desktop team meanwhile, it's not important to be flagged this way.

Changed in nautilus (Ubuntu):
assignee: Canonical Desktop Team (canonical-desktop-team) → nobody
importance: High → Low
Revision history for this message
Sebastien Bacher (seb128) wrote :

Brian, my understanding is that nautilus reports just get such info
https://launchpadlibrarian.net/340847171/HookError_source_nautilus.txt

it means they don't include some of the extra info but those details are not important in most report

Is that right or does it trigger apport prompts or something more annoying (just making sure to understand why you assigned to our team/flagged as a problem worth pinging us directly about)

Revision history for this message
Brian Murray (brian-murray) wrote : Re: [Bug 1723822] Re: uncaught TypeError triggers ValueError

On Wed, Oct 18, 2017 at 07:56:41AM -0000, Sebastien Bacher wrote:
> Brian, my understanding is that nautilus reports just get such info
> https://launchpadlibrarian.net/340847171/HookError_source_nautilus.txt
>
> it means they don't include some of the extra info but those details are
> not important in most report

Yes, the report still be sent but will be missing information.

> Is that right or does it trigger apport prompts or something more
> annoying (just making sure to understand why you assigned to our
> team/flagged as a problem worth pinging us directly about)

I wasn't aware how important the missing information was so pinged you
about it.

--
Brian Murray

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

This bug was fixed in the package apport - 2.20.8-0ubuntu1

---------------
apport (2.20.8-0ubuntu1) bionic; urgency=medium

   * New upstream release:
     - SECURITY UPDATE: Denial of service via resource exhaustion and
       privilege escalation when handling crashes of tainted processes.
     - When /proc/sys/fs/suid_dumpable is set to 2, do not assume that
       the user and group owning the /proc/<PID>/stat file is the same
       owner and group that started the process. Rather check the dump
       mode of the crashed process and do not write a core file if its
       value is 2. Thanks to Sander Bos for discovering this issue!
       (CVE-2017-14177, LP: #1726372)
     - SECURITY UPDATE: Denial of service via resource exhaustion,
       privilege escalation, and possible container escape when handling
       crashes of processes inside PID namespaces.
     - Change the method for determining if a crash is from a container
       so that there are no false positives from software using PID
       namespaces. Additionally, disable container crash forwarding by
       ignoring crashes that occur in a PID namespace. This functionality
       may be re-enabled in a future update. Thanks to Sander Bos for
       discovering this issue!
       (CVE-2017-14180, LP: #1726372)
   * apport/hookutils.py: modify package_versions to return an empty string if
     packages is empty. (LP: #1723822)

 -- Brian Murray <email address hidden> Wed, 15 Nov 2017 12:44:24 -0800

Changed in apport (Ubuntu):
status: Triaged → Fix Released
Changed in nautilus (Ubuntu):
status: Triaged → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package nautilus - 1:3.38.1-1ubuntu1

---------------
nautilus (1:3.38.1-1ubuntu1) groovy; urgency=medium

  * New upstream version
    - don't block to restore from trash (lp: #1839380)
  * debian/source_nautilus.py:
    - updated the apport script to use the multiarch directory, install
      it in the nautilus binary that is arch any (lp: #1723822)
  * Resynchronizr on Debian:
    - debian/control.in:
      + Build-Depend on libunity-dev
      + lower gnome-sushi Recommends to a Suggests
    - debian/changelog, debian/nautilus.maintscript: set epoch number
      (which was added by error)
    - debian/source_nautilus.py,
      debian/nautilus-data.install:
      + Apport hook to list versions of files in /usr/lib/nautilus and
        reassign the crashes when they are not due to nautilus code directly
    - debian/rules:
      + Build Unity support
    - 0001-Respect-gtk-dialogs-use-header-for-all-dialogs.patch
      + Use a normal titlebar if the desktop environment wants it
    - 04_suppress_umount_in_ltsp.patch:
      + Don't list unmount and eject actions on LTSP clients
    - 12_unity_launcher_support.patch:
      + unity launcher integration (list bookmarks in the context menu,
        display a bar on the icon during copies)
    - 18_unity_icon_color.patch:
      + specify a background color for the unity launcher icon
    - 19_unity_open_location_xid.patch:
      + Add a new dbus property to store the lists of opened locations
        referenced by their parent nautilus window XID.
    - 20_add_timestamp_to_operations.patch:
      + Add *WithTimestamp dbus methods for file operations that
        might trigger a dialog, that should be presented with time.
    - appstream-compulsory.patch:
      + Set nautilus as unremovable in GNOME Software
    - nautilusgtkplacesview-show-error-if-volume-is-not-mo.patch:
      + show error if volume is not mounted, see LP #1764779
    - ubuntu/shell-search-provider-implement-XUbuntuCancel-to-request-.patch:
      + implement XUbuntuCancel to request search cancellation
    - ubuntu_backspace_behaviour.patch:
      + restore backspace behaviour to go back
    - ubuntu_infobars_color.patch:
      + set infobar type to "other" rather than "question" to avoid blue
        cluebars

 -- Sebastien Bacher <email address hidden> Mon, 05 Oct 2020 11:37:10 +0200

Changed in nautilus (Ubuntu):
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.