Here's an example slot conflict triggered by a downgrade: $ emerge -p =dev-libs/glib-2.30.2 Calculating dependencies... done! [ebuild UD ] dev-libs/glib-2.30.2 [2.32.3] !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-libs/glib:2 (dev-libs/glib-2.30.2::test_repo, ebuild scheduled for merge) pulled in by =dev-libs/glib-2.30.2 (dev-libs/glib-2.32.3::test_repo, installed) pulled in by dev-libs/glib:2/2.32= required by (dev-libs/dbus-glib-0.98::test_repo, installed) The depgraph._slot_abi_update_probe() method only searches for upgrades, so it doesn't trigger rebuild of reverse dependencies when there's a downgrade like this. We could add a complementary _slot_abi_downgrade_probe() method that detects cases where a downgrade is desirable, like when the newer version has been masked or removed (or possibly when an atom matching a lower version is given as an argument like in the above example).
This is fixed in git: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=02bcf332a88bbf25b9e0391b1a6d781ab4bbe0b9 Note that it only triggers rebuilds when a downgrade will occur due to a package being masked or unavailable (though the mask could be a "runtime mask" that results from backtracking).
This is fixed in 2.1.11.5 and 2.2.0_alpha116.
*** Bug 608386 has been marked as a duplicate of this bug. ***