I was running a --depclean removing >400 packages which takes a while so I wanted to install an another package at the same time. This gave me a stack trace: >> Regenerating /etc/ld.so.cache... >>> sys-apps/xinetd-2.3.14 merged. >>> Recording sys-apps/xinetd in "world" favorites file... >>> No packages selected for removal by clean. >>> Auto-cleaning packages... Traceback (most recent call last): File "/usr/bin/emerge", line 4049, in ? emerge_main() File "/usr/bin/emerge", line 4044, in emerge_main myopts, myaction, myfiles, spinner) File "/usr/bin/emerge", line 3592, in action_build ldpath_mtimes) File "/usr/bin/emerge", line 2312, in unmerge raise portage_exception.PackageNotFound(x) portage_exception.PackageNotFound: 'media-plugins/xmms-vorbis' milffis portage # emerge --info Portage 2.1.1-r1 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.4-r3, 2.6.17-gentoo-r8 i686) ================================================================= System uname: 2.6.17-gentoo-r8 i686 AMD Athlon(tm) Gentoo Base System version 1.12.6 Last Sync: Fri, 03 Nov 2006 01:47:01 +0000 distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] ccache version 2.3 [enabled] app-admin/eselect-compiler: [Not Present] dev-java/java-config: 1.3.7, 2.0.30 dev-lang/python: 2.3.5, 2.4.3-r4 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.3 dev-util/confcache: [Not Present] sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.60 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2 sys-devel/binutils: 2.16.1-r3 sys-devel/gcc-config: 1.3.13-r4 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.17-r1 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=athlon-xp -O2 -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/init.d/ /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-march=athlon-xp -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig ccache distcc distlocks metadata-transfer noinfo parallel-fetch sandbox sfperms strict" GENTOO_MIRRORS=" http://trumpetti.atm.tut.fi/gentoo/ http://lame.lut.fi/linux/gentoo/distfiles/ http://ftp.linux.ee/pub/gentoo/distfiles/ ftp://ftp.linux.ee/pub/gentoo/distfiles/ ftp://trumpetti.atm.tut.fi/gentoo/ http://ftp.du.se/pub/os/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://10.80.8.247/gentoo-portage" USE="x86 3dnow acpi alsa bash-completion bitmap-fonts cli cracklib crypt cups dlloader dri dv dvd dvdr dvdread elibc_glibc fam gd gpm hal iconv input_devices_evdev input_devices_keyboard input_devices_mouse insecure-drivers isdnlog kernel_linux libg++ matrox mmx mng mozdevelop mozsvg mozxmlterm mysql ncurses nls nptl nptlonly opengl pam pcre php ppds pppd readline reflection samba session spl sse ssl svg tcpd truetype-fonts type1-fonts udev unicode userland_GNU video_cards_none video_cards_nvidia vim-with-x win32codecs xinerama xml xorg xvid zlib" Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS
and you wonder?
*** Bug 155041 has been marked as a duplicate of this bug. ***
The error occurred during the post merge "world" clean phase. That particular area does lots of access to the installed package database without any locking. I suppose we could lock the individual packages as necessary, or even do a global lock on the whole database of installed packages. Eventually, I plan to fix all concurrency issues by handling all installs and uninstalls via a single daemon process. After the daemon has been implemented, there won't be any need for locking, since all installs and uninstalls will be handled by (essentially) a single thread (builds will be able to run in separate threads, just not installs and uninstalls).
In svn r5027:5028 I've fixed it to use a global lock. The lock will be reacquired/released for each individual unmerge, allowing opportunities for other processes to acquire it.
*** Bug 155102 has been marked as a duplicate of this bug. ***
No more duplicates, please. ;) This has been released in 2.1.2_rc1-r7.