Additional drivers tab cause uncancellable operation that prevents the program from closing

Bug #2076084 reported by Nathan Teodosio
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
Triaged
Low
Nathan Teodosio

Bug Description

Start software-properties-gtk, switch to additional drivers tab. The program will start consuming 100% CPU for quite some time (many seconds or minutes depending on the machine).

There is however no way to cancel the operation other than killing software-properties. Trying to close the window or clicking Close button hangs.

Test plans
----------

1. Start software-properties-gtk
1.1. Go to additional drivers tab.
1.2. Click close at the south-east corner or close the window via your window manager.
Expected. Window closes immediately.

4. Start software-properties-gtk
4.1. Go to additional drivers tab and wait.
Expected: The viewport will at the end say that either no drivers are available or show a list of drivers such as in the drivers-list.png attachment. The cancel/retry buttons are gone in the latter case.

2. Start software-properties-gtk and 'top' in a terminal
2.1. Go to additional drivers tab.
Expected: The 'python3' command starts consuming 100% CPU.
2.2. Click cancel.
Expected: The aforementioned process is no longer hogging the CPU, indicating that the driver scan really stopped. The button is now retry, clickable.
2.3. Click retry.
Expected: The 'python3' command starts consuming 100% CPU. The button is now cancel.

3. Start software-properties-gtk and 'top' in a terminal
3.1. Go to additional drivers tab.
3.2. Get the PID of the 'python3' process consuming 100% CPU and kill it with kill -29 PID
Expected: The viewport reports the error. Retry is clickable.

5. Start software-properties-gtk
5.1. Introduce a unconditional exception in /usr/lib/python3/dist-packages/UbuntuDrivers/detect.py:system_device_drivers, e.g.:
--->
--- /usr/lib/python3/dist-packages/UbuntuDrivers/detect.py
+++ /usr/lib/python3/dist-packages/UbuntuDrivers/detect.py
@@ -866,4 +866,5 @@

 def system_device_drivers(apt_cache=None, sys_path=None, freeonly=False):
+print(fooo)
     '''Get by-device driver packages that are available for the system.

<---
5.2. Go to additional drivers tab.
Expected: "An error occurred while searching for drivers."; In the terminal, the backtrace is shown:
--->
Traceback (most recent call last):
  File "/home/nteodosio/canonical/ubuntu-pro/software-properties/softwareproperties/gtk/SoftwarePropertiesGtk.py", line 1456, in detect_drivers
    raise(self.p.exception)
Exception: Traceback (most recent call last):
  File "/home/nteodosio/canonical/ubuntu-pro/software-properties/softwareproperties/gtk/SoftwarePropertiesGtk.py", line 121, in run
    multiprocessing.Process.run(self)
  File "/usr/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/nteodosio/canonical/ubuntu-pro/software-properties/softwareproperties/gtk/SoftwarePropertiesGtk.py", line 1437, in wrapper_system_device_drivers
    devices = detect.system_device_drivers(cache)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/UbuntuDrivers/detect.py", line 919, in system_device_drivers
    print(fooooo)
          ^^^^^^
NameError: name 'fooooo' is not defined
<---

Related branches

description: updated
Revision history for this message
Nathan Teodosio (nteodosio) wrote :
description: updated
description: updated
Changed in software-properties (Ubuntu):
status: In Progress → Triaged
description: updated
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.