Bug 1626575 - Graphical installer fails to start in Fedora-Rawhide-20180907.n.0 due to atk change: "metaclass conflict"
Summary: Graphical installer fails to start in Fedora-Rawhide-20180907.n.0 due to atk ...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: atk
Version: rawhide
Hardware: All
OS: Linux
unspecified
urgent
Target Milestone: ---
Assignee: Matthias Clasen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-09-07 16:23 UTC by Adam Williamson
Modified: 2019-02-19 19:12 UTC (History)
10 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2018-09-09 04:27:03 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Adam Williamson 2018-09-07 16:23:30 UTC
Most openQA tests of today's Rawhide compose failed:

https://openqa.fedoraproject.org/tests/overview?distri=fedora&version=Rawhide&build=Fedora-Rawhide-20180907.n.0&groupid=1

The error is visible in the screenshots, e.g.:

https://openqa.fedoraproject.org/tests/275970#step/_boot_to_anaconda/12

It appears that pygobject3 blows up when anaconda tries to import AnacondaWidgets from gi.repository . AnacondaWidgets is part of anaconda-widgets, which is part of anaconda, but anaconda itself has not changed in Rawhide for a week, and this worked in the previous several composes up to 20180906.n.0. What seems to have changed in 20180907.n.0 is pygobject3 itself: we went from python3-gobject-3.29.2-1.fc29 to python3-gobject-3.30.0-1.fc30. That seems the most likely candidate to have caused this.

Comment 1 Adam Williamson 2018-09-07 20:13:54 UTC
Updates: looks like gobject isn't the cause of this, directly. I'm doing some tests manually with the live image, downgrading various packages and trying to launch anaconda. I also added some debug lines to /usr/lib64/python3.7/site-packages/gi/module.py to print out the 'name', 'bases' and 'dict_' being used for the problematic metaclass call.

At first, that points to this:

XXX name: MountpointSelector
XXX bases: (<class 'gi.repository.Gtk.EventBox'>, <class 'gi.repository.Atk.ImplementorIface'>)
XXX dict: {'__info__': ObjectInfo(MountpointSelector), '__module__': 'gi.repository.AnacondaWidgets', '__gtype__': <GType AnacondaMountpointSelector (93864110367760)>}

based on that (specifically the 'Atk' base) I tried downgrading atk, which also requires downgrading at-spi2-atk . But it looks like that breaks any attempt to do 'from gi.repository import Gtk', so anaconda startup still fails, but with a different traceback and problematic metaclass call. I'm not sure if downgrading atk fixes the *initial* problem but anaconda still fails because it breaks Gtk, or if downgrading atk just causes anaconda startup to fail *sooner* on the Gtk issue.

Comment 2 Adam Williamson 2018-09-07 21:04:10 UTC
More info: kalev found https://gitlab.gnome.org/GNOME/atk/issues/1 , which looks related.

So far it's looking like https://gitlab.gnome.org/GNOME/atk/commit/30f2712c5bbffbc03e98272c852d29b4bdf8b52e broke an interface here somehow, with the result that anything that uses this problematic `AtkImplementorIface` stops working on update to an atk with that commit.

It seems that rebuilding things "fixes" them - as the original reporter found. But once rebuilt, they don't work with the *old* atk any more.

kalev did an atk build with the commit reverted...but when I tested that, I get this crash in anaconda:

Traceback (most recent call last):
  File "/sbin/anaconda", line 633, in <module>
    display.setup_display(anaconda, opts, addon_paths=addon_paths)
  File "/usr/lib64/python3.7/site-packages/pyanaconda/display.py", line 336, in setup_display
    anaconda.initInterface(addon_paths=addon_paths)
  File "/usr/lib64/python3.7/site-packages/pyanaconda/anaconda.py", line 374, in initInterface
    from pyanaconda.ui.gui import GraphicalUserInterface
  File "/usr/lib64/python3.7/site-packages/pyanaconda/ui/gui/__init__.py", line 20, in <module>
    import meh.ui.gui
  File "/usr/lib/python3.7/site-packages/meh/ui/gui.py", line 28, in <module>
    from gi.repository import Gtk
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
  File "/usr/lib64/python3.7/site-packages/gi/importer.py", line 146, in load_module
    dynamic_module = load_overrides(introspection_module)
  File "/usr/lib64/python3.7/site-packages/gi/overrides/__init__.py", line 125, in load_overrides
    override_mod = importlib.import_module(override_package_name)
  File "/usr/lib64/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/lib64/python3.7/site-packages/gi/overrides/Gtk.py", line 136, in <module>
    class Widget(Gtk.Widget):
  File "/usr/lib64/python3.7/site-packages/gi/module.py", line 215, in __getattr__
    wrapper = metaclass(name, bases, dict_)
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

note it's failing in Gtk.py now. We think this is because GTK+ got rebuilt with the changed atk, so it stops working when atk is reverted. :/

Comment 3 Adam Williamson 2018-09-07 21:05:25 UTC
I also tested a scenario where we use the changed atk with a rebuilt anaconda. With that, anaconda startup gets further, but it still doesn't completely work; no window appears for a long time, then eventually an anaconda crash dialog appears which suggests that libtimezonemap runs into the same problem. So, we'd have to rebuild it too.

Comment 4 Adam Williamson 2018-09-09 04:27:03 UTC
This is resolved in 20180908.n.0. The tests are failing due to cantarell appearance changes, but this is resolved and anaconda runs.

Comment 5 Kalev Lember 2019-02-19 19:12:18 UTC
This issue reappeared in rawhide/F30 briefly today after building latest atk. It turns out that the ABI break wasn't fixed in atk git master and reappeared when updating to 2.31.90. I've fixed the atk package (again) and identified ~20 builds that had faulty atk-devel in their build roots and rebuilt all of them.


Note You need to log in before you can comment on or make changes to this bug.