Skip to content

Commit

Permalink
apport-gtk: Catch AssertionError when importing Gdk
Browse files Browse the repository at this point in the history
apport-gtk can fail to start during an upgrade from Ubuntu 20.04 (focal)
to Ubuntu 22.04 (jammy) due to an AssertionError when importing `Gdk`:

```
Traceback (most recent call last):
  File "/usr/share/apport/apport-gtk", line 19, in <module>
    from gi.repository import GLib, Wnck, GdkX11, Gdk
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "/usr/lib/python3/dist-packages/gi/importer.py", line 145, in load_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "/usr/lib/python3/dist-packages/gi/importer.py", line 145, in load_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "/usr/lib/python3/dist-packages/gi/importer.py", line 146, in load_module
    dynamic_module = load_overrides(introspection_module)
  File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 118, in load_overrides
    override_mod = importlib.import_module(override_package_name)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/lib/python3/dist-packages/gi/overrides/Gdk.py", line 83, in <module>
    Color = override(Color)
  File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 195, in override
    assert g_type != TYPE_NONE
AssertionError
```

Also catch `AssertionError` when importing the GTK libraries.

Bug: https://launchpad.net/bugs/1980238
Signed-off-by: Benjamin Drung <bdrung@ubuntu.com>
  • Loading branch information
bdrung committed Aug 15, 2022
1 parent dd432ca commit 5672172
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion gtk/apport-gtk
Expand Up @@ -28,7 +28,7 @@ try:
gi.require_version("Gtk", "3.0") # noqa: E402, pylint: disable=C0413
gi.require_version("Wnck", "3.0") # noqa: E402, pylint: disable=C0413
from gi.repository import GdkX11, GLib, Gtk, Wnck
except (ImportError, RuntimeError) as error:
except (AssertionError, ImportError, RuntimeError) as error:
# probably distribution upgrade or session just closing down?
sys.stderr.write("Cannot start: %s\n" % str(error))
sys.exit(1)
Expand Down

0 comments on commit 5672172

Please sign in to comment.