Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 410801 - sys-apps/portage-2.2.0_alpha99 hangs due to extremely long slot_conflict_handler._check_solution loop
Summary: sys-apps/portage-2.2.0_alpha99 hangs due to extremely long slot_conflict_hand...
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Unclassified (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 300071 409383
  Show dependency tree
 
Reported: 2012-04-04 18:12 UTC by PM
Modified: 2012-04-05 23:46 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
debug log (debug.log.bz2,225.64 KB, application/octet-stream)
2012-04-04 18:53 UTC, PM
Details

Note You need to log in before you can comment on or make changes to this bug.
Description PM 2012-04-04 18:12:00 UTC
I do:

# emerge world -uD

portage prints this:

Calculating dependencies... done!
[ebuild     U  ] dev-libs/icu-49.1 [4.8.1.1-r1]
[ebuild     U  ] dev-libs/libnl-1.1-r3 [1.1-r2]
[ebuild     U  ] dev-perl/Net-SSLeay-1.470.0 [1.450.0]
[ebuild     U  ] x11-apps/xpr-1.0.4 [1.0.3]
[ebuild     U  ] x11-apps/xwud-1.0.4 [1.0.3]
[ebuild     U  ] x11-apps/xlsatoms-1.1.1 [1.1.0]
[ebuild   R    ] x11-libs/qt-core-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-script-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-dbus-4.8.1  USE="(-c++0x*)" 
[ebuild     U  ] x11-libs/qt-gui-4.8.1-r1 [4.8.1] USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-sql-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-qt3support-4.8.1  USE="(-c++0x*)" 
[ebuild     U  ] net-p2p/bitcoin-qt-0.6.0 [0.6.0_rc5] LINGUAS="-he%" 
[ebuild     U  ] app-text/xdvik-22.85 [22.84.16]

and stalls with 100% CPU usage on one core.


Portage 2.2.0_alpha99 (default/linux/amd64/10.0/desktop, gcc-4.5.3, glibc-2.14.1-r2, 3.2.7-pf x86_64)
=================================================================
System uname: Linux-3.2.7-pf-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E7400_@_2.80GHz-with-gentoo-2.1
Timestamp of tree: Wed, 04 Apr 2012 17:30:01 +0000
distcc 3.1 x86_64-pc-linux-gnu [disabled]
app-shells/bash:          4.2_p24
dev-java/java-config:     2.1.11-r3
dev-lang/python:          2.7.2-r3, 3.2.2-r1
dev-util/cmake:           2.8.7-r5
dev-util/pkgconfig:       0.26
sys-apps/baselayout:      2.1
sys-apps/openrc:          0.9.9.3
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.68
sys-devel/automake:       1.4_p6-r1, 1.9.6-r3, 1.10.3, 1.11.4
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.5.3-r2
sys-devel/gcc-config:     1.6
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r3
sys-kernel/linux-headers: 3.3 (virtual/os-headers)
sys-libs/glibc:           2.14.1-r2
Repositories: gentoo multimedia bitcoin sunrise roslin dupa
Installed sets: @system
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe -ggdb"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=native -pipe -ggdb"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--keep-going --quiet-build=n"
FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles installsources news parallel-fetch preserve-libs protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -march=native -pipe -ggdb"
GENTOO_MIRRORS="http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/ http://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/"
LANG="pl_PL.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="pl"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/multimedia /usr/local/portage/layman/bitcoin /usr/local/portage/layman/sunrise /usr/local/portage/layman/roslin /usr/local/portage/moje"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X Xaw3d a52 aac aalib acl acpi alsa amd64 amr amrnb amrwb apng async audiofile automount avahi bash-completion berkdb bfq bineditor bluray branding bzip2 c++0x cairo cdda cddb cdparanoia cdr chdir cli consolekit cracklib crypt css cuda cups curl cxx dbus dirac disk-partition divx djvu dri dts dvd dvdr editor emboss emovix enca encode exchange exif faac faad fam fat ffmpeg fftw firefox firefox3 flac fontconfig fortran g3dvl gd gdbm gdu geoip gif glitz gmedia gphoto2 gpm gtk hddtemp iconv id3 id3tag imagemagick inotify iostats ipod jpeg kde kde4 kdehiddenvisibility kipi kompare kpathsea kqemu ladspa lame laptop lastfm latex lcms libass libcaca libnotify libsamplerate lm_sensors lzma lzo mad matroska midi mjpeg mmap mmx mmxext mng modules mp3 mp3tunes mp4 mpeg mplayer mtp mudflap multilib musicbrainz ncurses networkmanager nls nptl nptlonly nsplugin ntfs nvidia ogg okteta openal opencore-amr opengl openmp optimized-qmake pam pango pch pcre pdf plasma png policykit portage ppds pppd private-headers pulseaudio qt3 qt3support qt4 qthelp raster readline realmedia roe scanner schroedinger sdl secure-delete sensord session shaders slang sndfile solver soundtouch sourceview sparse spell sse sse2 sse3 sse4 sse4a ssl ssse3 startup-notification suid svg swat symlink sysfs syslog tcpd theora threads tiff truetype udev unicode upnp usb vaapi vamp vcd vdpau vorbis webkit wifi wmf wmp wxwidgets wxwindows x264 xcb xcomposite xml xorg xscreensaver xv xvid xvmc zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="pl" PHP_TARGETS="php5-3" QEMU_SOFTMMU_TARGETS="x86_64 i386" QEMU_USER_TARGETS="x86_64 i386" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Zac Medico gentoo-dev 2012-04-04 18:19:52 UTC
Please post a backtrace, created as follows:

1) killall -s SIGUSR1 emerge
2) When emerge shows the (Pdb) prompt, type the 'bt' command and press 'Enter'
Comment 2 PM 2012-04-04 18:38:30 UTC
# emerge world -uD
Calculating dependencies... done!
[ebuild     U  ] dev-libs/icu-49.1 [4.8.1.1-r1]
[ebuild     U  ] dev-libs/libnl-1.1-r3 [1.1-r2]
[ebuild     U  ] dev-perl/Net-SSLeay-1.470.0 [1.450.0]
[ebuild     U  ] x11-apps/xpr-1.0.4 [1.0.3]
[ebuild     U  ] x11-apps/xwud-1.0.4 [1.0.3]
[ebuild     U  ] x11-apps/xlsatoms-1.1.1 [1.1.0]
[ebuild   R    ] x11-libs/qt-core-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-script-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-dbus-4.8.1  USE="(-c++0x*)" 
[ebuild     U  ] x11-libs/qt-gui-4.8.1-r1 [4.8.1] USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-sql-4.8.1  USE="(-c++0x*)" 
[ebuild   R    ] x11-libs/qt-qt3support-4.8.1  USE="(-c++0x*)" 
[ebuild     U  ] net-p2p/bitcoin-qt-0.6.0 [0.6.0_rc5] LINGUAS="-he%" 
[ebuild     U  ] app-text/xdvik-22.85 [22.84.16]
--Return--
> /usr/bin/emerge(28)debug_signal()->None
-> pdb.set_trace()
(Pdb) bt
  /usr/bin/emerge(43)<module>()
-> retval = emerge_main()
  /usr/lib64/portage/pym/_emerge/main.py(2039)emerge_main()
-> myopts, myaction, myfiles, spinner)
  /usr/lib64/portage/pym/_emerge/actions.py(305)action_build()
-> mydepgraph.display_problems()
  /usr/lib64/portage/pym/_emerge/depgraph.py(6232)display_problems()
-> self._display_problems()
  /usr/lib64/portage/pym/_emerge/depgraph.py(6251)_display_problems()
-> self._show_slot_collision_notice()
  /usr/lib64/portage/pym/_emerge/depgraph.py(752)_show_slot_collision_notice()
-> self._dynamic_config._slot_conflict_handler = slot_conflict_handler(self)
  /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(154)__init__()
-> new_solutions = self._check_configuration(config, all_conflict_atoms_by_slotatom, conflict_nodes)
  /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(670)_check_configuration()
-> solution = self._check_solution(config, candidate, all_conflict_atoms_by_slotatom)
  /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(785)_check_solution()
-> self._force_flag_for_package(required_changes, ppkg, flag, "disabled")
  /usr/lib64/portage/pym/_emerge/resolver/slot_collision.py(695)_force_flag_for_package()
-> changes[flag] = flag_change
> /usr/bin/emerge(28)debug_signal()->None
-> pdb.set_trace()
(Pdb)
Comment 3 Zac Medico gentoo-dev 2012-04-04 18:51:16 UTC
Please attach a debug log so we can see what packages are triggering this:

   emerge world -uD --debug &> debug.log

Kill it after it hangs up.
Comment 4 PM 2012-04-04 18:53:57 UTC
Created attachment 307825 [details]
debug log
Comment 5 Zac Medico gentoo-dev 2012-04-04 19:12:02 UTC
It looks like you need to disable the c++0x flag for x11-libs/qt-webkit-4.8.1, based on the following part of the log:

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

x11-libs/qt-core:4

  (x11-libs/qt-core-4.8.1::gentoo, ebuild scheduled for merge) pulled in by
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,qpa=,debug=,glib=,qt3support=] required by (x11-libs/qt-gui-4.8.1-r1::gentoo, ebuild scheduled for merge)
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=] required by (x11-libs/qt-script-4.8.1::gentoo, ebuild scheduled for merge)
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=,qt3support] required by (x11-libs/qt-qt3support-4.8.1::gentoo, ebuild scheduled for merge)
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=] required by (x11-libs/qt-dbus-4.8.1::gentoo, ebuild scheduled for merge)
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,qpa=,qt3support=] required by (x11-libs/qt-sql-4.8.1::gentoo, ebuild scheduled for merge)

  (x11-libs/qt-core-4.8.1::gentoo, installed) pulled in by
    ~x11-libs/qt-core-4.8.1[aqua=,c++0x=,debug=,ssl,qpa=] required by (x11-libs/qt-webkit-4.8.1::gentoo, installed)


It might be possible to solve this slot collision
by applying all of the following changes:
   - x11-libs/qt-qt3support-4.8.1 (Change USE: +c++0x +debug +qpa +aqua)
   - x11-libs/qt-sql-4.8.1 (Change USE: +c++0x +debug +qpa +aqua)
   - x11-libs/qt-core-4.8.1 (Change USE: +c++0x +debug +qpa +aqua)
   - x11-libs/qt-script-4.8.1 (Change USE: +c++0x +debug +qpa +aqua)
   - x11-libs/qt-dbus-4.8.1 (Change USE: +c++0x +debug +qpa +aqua)
   - x11-libs/qt-webkit-4.8.1 (Change USE: +debug +qpa +aqua)
   - x11-libs/qt-gui-4.8.1-r1 (Change USE: +c++0x +debug +qpa +aqua)
Comment 6 Zac Medico gentoo-dev 2012-04-04 19:20:00 UTC
Maybe simply adding --newuse to your command will solve it, since the flag is masked. From profiles/base/ChangeLog:

  31 Mar 2012; Davide Pesavento <pesa@gentoo.org> package.use.mask:
  Update mask of c++0x and qpa USE flags to include Qt 4.8.1.
Comment 7 PM 2012-04-04 19:40:30 UTC
I can't 
>Change USE: +c++0x
since it's masked

Doing emerge world -uDN seems to resolve everything, but it also wants to rebuild 30 other packages...

I tried rebuilding only the qt packages with various combinations of packages and switches, they either hang up or give me something like this:

# emerge qt-gui -a1ND

These are the packages that would be merged, in order:

Calculating dependencies... done!

emerge: there are no ebuilds to satisfy "~x11-libs/qt-script-4.8.1[-aqua,c++0x,-qpa,-debug]".
(dependency required by "x11-libs/qt-gui-4.8.1" [installed])
(dependency required by "qt-gui" [argument])
Comment 8 Zac Medico gentoo-dev 2012-04-04 19:46:52 UTC
(In reply to comment #7)
> I can't 
> >Change USE: +c++0x
> since it's masked

Yeah, the suggestion is backwards. You actually have to disable it, like I said at the beginning of comment #5. The flag is masked, so enabling it isn't really an option. Apparently we need to fix the code so that it won't suggest to enable masked flags.

> Doing emerge world -uDN seems to resolve everything, but it also wants to
> rebuild 30 other packages...

You could try --changed-use instead of --newuse, to see if it rebuilds fewer packages.
Comment 9 PM 2012-04-04 20:02:06 UTC
--changed-use seems to be the best workaround. Thanks.
Comment 10 Zac Medico gentoo-dev 2012-04-05 15:59:24 UTC
The debug log shows that it's checking 2^31 = 2147483648 solutions, which is not really practical. If we eliminate choices for c++0x, qpa, and aqua flags which are all masked, it will be reduced to 2^16 = 65536 solutions.
Comment 12 Zac Medico gentoo-dev 2012-04-05 23:46:07 UTC
This is fixed in 2.1.10.56 and 2.2.0_alpha100.