Public bug reported:

On Ubuntu 26.04 (Python 3.14), opening the Additional Drivers tab in
Software & Updates never completes. The viewport shows "Searching for
available drivers…" indefinitely; Cancel has no effect because no
detection process is ever started.

Steps to reproduce:
1. Run `software-properties-gtk` from a terminal.
2. Select the Additional Drivers tab.

Expected: the driver list (or an empty list / error) is shown, as on
releases up to 25.10.

Actual: the spinner never resolves, and the terminal shows:

Exception in thread Thread-1 (detect_drivers):
Traceback (most recent call last):
  File "/usr/lib/python3.14/threading.py", line 1082, in _bootstrap_inner
    self._context.run(self.run)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/usr/lib/python3.14/threading.py", line 1024, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File 
"/usr/lib/python3/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py",
 line 1458, in detect_drivers
    self.search_process.start()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/multiprocessing/process.py", line 121, in start
    self._popen = self._Popen(self)
                  ~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.14/multiprocessing/context.py", line 230, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib/python3.14/multiprocessing/context.py", line 306, in _Popen
    return Popen(process_obj)
  File "/usr/lib/python3.14/multiprocessing/popen_forkserver.py", line 35, in 
__init__
    super().__init__(process_obj)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib/python3.14/multiprocessing/popen_fork.py", line 20, in __init__
    self._launch(process_obj)
    ~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/usr/lib/python3.14/multiprocessing/popen_forkserver.py", line 47, in 
_launch
    reduction.dump(process_obj, buf)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/multiprocessing/reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
TypeError: cannot pickle 'SoftwarePropertiesGtk' object
when serializing tuple item 0
when serializing method reconstructor arguments
when serializing method object
when serializing dict item '_target'
when serializing softwareproperties.gtk.SoftwarePropertiesGtk.Process state
when serializing softwareproperties.gtk.SoftwarePropertiesGtk.Process object

Analysis:

Python 3.14 changed the default multiprocessing start method on Linux
from fork to forkserver (https://github.com/python/cpython/issues/84559,
see "Porting to Python 3.14"). Under forkserver, the Process object is
pickled to be sent to the fork server. detect_drivers()
(SoftwarePropertiesGtk.py:1454-1458) constructs the custom Process
subclass with a target that is a bound method of the
SoftwarePropertiesGtk instance, which is unpicklable, so start() raises.
The exception escapes in the launching thread before the worker exists,
so the error/cancel handling added for LP: #2076084 (related, not a
duplicate) never triggers and the UI spins forever.

Suggested fix:

Minimal regression fix: explicitly request the fork context for the
detection machinery, e.g. `_mp = multiprocessing.get_context("fork")`
and use it consistently for the Process subclass, the Pipe created in
Process.__init__, and the Queue at line 1453. This restores the pre-3.14
behavior exactly. Note that a full forkserver-compatible refactor would
also need the worker to construct its

ProblemType: Bug
DistroRelease: Ubuntu 26.04
Package: software-properties-gtk 0.120
ProcVersionSignature: Ubuntu 7.0.0-22.22-generic 7.0.0
Uname: Linux 7.0.0-22-generic x86_64
ApportVersion: 2.34.0-0ubuntu2
Architecture: amd64
CasperMD5CheckResult: pass
CurrentDesktop: ubuntu:GNOME
Date: Fri Jun 12 21:43:19 2026
InstallationDate: Installed on 2026-05-16 (27 days ago)
InstallationMedia: Ubuntu 26.04 "Resolute Raccoon" - Release amd64 (20260423.1)
PackageArchitecture: all
SourcePackage: software-properties
UpgradeStatus: No upgrade log present (probably fresh install)

** Affects: software-properties (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug resolute wayland-session

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

Title:
  Additional Drivers tab spins forever: driver detection Process cannot
  be pickled under Python 3.14's forkserver default

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/2156628/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to