Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 426284 - distcc breaks current stable x11-drivers/xf86-video-intel-2.19.0
Summary: distcc breaks current stable x11-drivers/xf86-video-intel-2.19.0
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: x86 Linux
: Normal normal (vote)
Assignee: MATSUU Takuto (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-07-12 09:22 UTC by Joe Breuer
Modified: 2012-11-28 20:47 UTC (History)
2 users (show)

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


Attachments
full Xorg.0.log with the problem (Xorg.0.log,6.08 KB, text/plain)
2012-07-12 09:23 UTC, Joe Breuer
Details
List of packages installed after the first build of xorg-server (packages-after-xorg-server.txt,2.01 KB, text/plain)
2012-07-12 13:55 UTC, Joe Breuer
Details
Packages whose files are used by the xorg-server build (packageUse_xorg-server.txt,1.85 KB, text/plain)
2012-07-18 06:49 UTC, Joe Breuer
Details
Files per package used by the xorg-server configure phase (packageVerbose_xorg-server_configure.txt,9.90 KB, text/plain)
2012-07-18 06:49 UTC, Joe Breuer
Details
Files per package used by the xorg-server compile phase (packageVerbose_xorg-server_compile.txt,21.87 KB, text/plain)
2012-07-18 06:49 UTC, Joe Breuer
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Joe Breuer 2012-07-12 09:22:47 UTC
After upgrading an x86 stable install, the now-current x11-drivers/xf86-video-intel-2.19.0 cannot load into x11-base/xorg-server-1.12.2.


Reproducible: Always

Steps to Reproduce:
"Happens every time" on this affected system. I do not have a similar enough system to do a sensible cross-check. But the sequence of events is this:

1. Have a x86 stable system as of (just before) 2012-03-04
   (using xf86-video-intel)
2. Upgrade to current stable as of 2012-07-12
3. Perform all requested rebuilds (rev-deps of ffi, pcre, ...; x11-drivers)

Actual Results:  
X11 no longer starts, error messages in Xorg.0.log are (full log will be attached):

[    38.181] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[    38.328] (EE) Failed to load /usr/lib/xorg/modules/drivers/intel_drv.so: /usr/lib/xorg/modules/drivers/intel_drv.so: undefined symbol: fbScreenInit
[    38.328] (II) UnloadModule: "intel"


Expected Results:  
X11 works as before

The "missing" symbol appears to be defined in /usr/lib/xorg/modules/libfb.so:

# objdump -T /usr/lib/xorg/modules/libfb.so | grep fbScreenInit
000196a7 g    DF .text  000000a5  Base        fbScreenInit


libfb.so is not a direct dependency of intel_drv.so; but looking at nvidia_drv.so on another machine this appears to be the way that the X11 driver "plugin" system works.

Both xorg-server and xf86-video-intel are freshly built by the upgrade (xf86-video-intel again manually when following the X server "rebuild all drivers now" instructions).

I've tried without any xorg.conf file(s); no difference.


# emerge --info
Portage 2.1.10.65 (default/linux/x86/10.0/desktop, gcc-4.5.3, glibc-2.14.1-r3, 3.2.21-gentoo i686)
=================================================================
System uname: Linux-3.2.21-gentoo-i686-Intel-R-_Atom-TM-_CPU_N270_@_1.60GHz-with-gentoo-2.1
Timestamp of tree: Thu, 12 Jul 2012 06:45:01 +0000
distcc 3.1 i686-pc-linux-gnu [enabled]
app-shells/bash:          4.2_p20
dev-java/java-config:     2.1.11-r3
dev-lang/python:          2.7.3-r2, 3.2.3
dev-util/cmake:           2.8.7-r5
dev-util/pkgconfig:       0.26
sys-apps/baselayout:      2.1-r1
sys-apps/openrc:          0.9.8.4
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.68
sys-devel/automake:       1.9.6-r3, 1.11.1
sys-devel/binutils:       2.21.1-r1
sys-devel/gcc:            4.5.3-r2
sys-devel/gcc-config:     1.6
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r1
sys-kernel/linux-headers: 3.1 (virtual/os-headers)
sys-libs/glibc:           2.14.1-r3
Repositories: gentoo jmbreuer LOCAL
ACCEPT_KEYWORDS="x86"
ACCEPT_LICENSE="* -@EULA"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -momit-leaf-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
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"
CXXFLAGS="-march=prescott -O2 -momit-leaf-frame-pointer -pipe"
DISTDIR="/home/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps y -j 16 --load-average=6"
FCFLAGS="-O2 -march=i686 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distcc distcc-pump distlocks ebuild-locks fixlafiles news parallel-fetch parse-eapi-ebuild-head protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -march=i686 -pipe"
GENTOO_MIRRORS="http://de-mirror.org/distro/gentoo/ http://gentoo.mneisen.org/ http://gentoo.wheel.sk/ http://gentoo.mirror.pw.edu.pl/"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en de"
MAKEOPTS="-j 16 -l 6"
PKGDIR="/home/portage/packages/genatom"
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="/var/lib/layman/jmbreuer /usr/local/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X Xaw3d a52 aac acl acpi alsa berkdb bluetooth branding bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus dri dts dv dvd dvdr emboss encode exif fam firefox flac gdbm gif gpm gsm gtk iconv ipv6 java jce jpeg kerberos laptop lcms ldap libnotify live mad matroska mmx mmxext mng modules mp3 mp3rtp mp4 mpeg mudflap mule musepack ncurses network network-cron networkmanager nls nptl nsplugin offensive ogg opengl openmp pam pango pcre pdf png policykit ppds pppd pvr qt3support readline rtc rtsp samba sdl session sndfile spell sse sse2 ssl ssse3 startup-notification stream subversion svg tcpd theora tiff truetype udev udisks unicode upnp upower usb v4l v4l2 vcd vim-syntax vorbis wxwidgets x264 x86 xcb xinerama xml xorg xosd xscreensaver xv xvid xvmc zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 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 keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en de" PHP_TARGETS="php5-3" PYTHON_TARGETS="python3_2 python2_7" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="intel" 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, USE_PYTHON
Comment 1 Joe Breuer 2012-07-12 09:23:53 UTC
Created attachment 317978 [details]
full Xorg.0.log with the problem
Comment 2 Chí-Thanh Christopher Nguyễn gentoo-dev 2012-07-12 10:19:14 UTC
Something must be special about your system. What USE flags was xf86-video-intel built with?
Comment 3 Joe Breuer 2012-07-12 10:31:45 UTC
(In reply to comment #2)
> Something must be special about your system. What USE flags was
> xf86-video-intel built with?

Nothing (knowingly) special: +dri -sna
Comment 4 Joe Breuer 2012-07-12 13:54:45 UTC
In the mean time, I rebuilt x11-base/xorg-server-1.12.2 (which is what /usr/lib/xorg/modules/libfb.so which has the symbol in question belongs to).

No change.

Then I also rebuilt x11-drivers/xf86-video-intel-2.19.0 (again).

A-ha! Now X11 starts as usual.


So apparently due to the exact environment in my upgrade scenario, first x11-base/xorg-server-1.12.2 was built "broken" which also causes the x11-drivers/xf86-video-intel-2.19.0 built against it to build correctly, but not work.


In my @world build there were 70 packages built after xorg-server. I'll dig the list out of my emerge.log and attach it.


So it might be a different package that's affecting the xorg-server build, but is not correctly considered as a dependency.

But this behaviour is also consistent with the following scenario:
The xorg-server ebuild uses headers (or other files with similar effect) not from its own build directory, but from the version already installed in the system - I believe this is a "normal" problem every now and then for certain packages.

I'd be happy to investigate this further; how do I go about finding "uses installed instance" occurences from an ebuild?
Comment 5 Joe Breuer 2012-07-12 13:55:30 UTC
Created attachment 317996 [details]
List of packages installed after the first build of xorg-server
Comment 6 Joe Breuer 2012-07-18 06:36:52 UTC
I did some analyses on this with the help of the sandbox in debug mode and a script I'd hacked together to help me analyze the results.

The script is here: https://github.com/jmbreuer/gentoo-utils/tree/master/daz


While I'm still analyzing these results, I've obviously done rebuilds of xorg-server and xf86-video-intel to generate data, which led to one interesting observation:

I'd rebuilt first xf86-video-intel and then xorg-server to generate logs for analysis. After this, the X server would not load intel_drv with the original error message: fbScreenInit undefined.


Is this intended behavior? What's going on here? Simply rebuilding xf86-video-intel does not change anything. I'm now off to rebuilding xorg-server again and keeping the various binary packages, in the hopes of finding the specific difference...
Comment 7 Joe Breuer 2012-07-18 06:45:17 UTC
... and the first results from the script are in:

xorg-server does not appear to use any of its own installed resources; also it does not read any files from packages built after xorg-server in the original emerge. So that's good news.

To give you an idea, I'll attach the script's output, slightly cleaned up.
Comment 8 Joe Breuer 2012-07-18 06:49:08 UTC
Created attachment 318510 [details]
Packages whose files are used by the xorg-server build
Comment 9 Joe Breuer 2012-07-18 06:49:35 UTC
Created attachment 318512 [details]
Files per package used by the xorg-server configure phase
Comment 10 Joe Breuer 2012-07-18 06:49:55 UTC
Created attachment 318514 [details]
Files per package used by the xorg-server compile phase
Comment 11 Joe Breuer 2012-07-18 09:47:13 UTC
I now have some indication that using distcc might break (specifically) the x11-drivers/xf86-video-intel package; the other failures might be related to where a certain object happened to get compiled undert distcc.

I'm still miles away from a conclusive result, but first order seems to indicate:

- building with FEATURES="distcc" with a certain probability breaks x11-drivers/xf86-video-intel for me; regardless of whether distcc-pump is enabled as well (probability does not appear to be affected)

- building with FEATURES="-distcc" seems to always result in a working driver


I'll try to dig into this further. I'd have understood problems with pump mode, but problems with plain distcc are contrary to my experiences in this setup. I used to be able to do full KDE system builds against these distcc servers without any conspicuities.
Comment 12 Rémi Cardona (RETIRED) gentoo-dev 2012-07-19 06:32:58 UTC
Reassigning to distcc maintainers then.

Thank you
Comment 13 Joe Breuer 2012-07-19 08:36:21 UTC
I've tried to run some more tests, but this is getting exceedingly frustrating.


Enviroment:

tiny: The machine I'm running the emerge on. Ideally, it should not run a compiler at all, since it's quite anemic compared to the other hosts. MAKEOPTS is set to -j16.

average: One of the helper machines (4 cores, 8 jobs).

large: One of the helper machines (16 cores, 32 jobs).

The compiler for tiny (i686-pc-linux-gnu) is a cross-compiler (crossdev -S) on the amd64 helper machines.


What I see is this:

- Sometimes compiles apparently still happen on tiny, dispite not having tiny or localhost in my distcc host list.
I'm still trying to figure out what's going on here. One theory is that distcc falls back to compiling on localhost is when it thinks it has exhausted the number of remote jobs (according to /num in the distcc host configuration).

- When I try to force mixed compiles (here: localhost + average), this seems to give the largest probability that the resulting build is broken.


Damn. I cannot reproduce this anymore. Yesterday, roughly every second build using a mixture of remote and local compiles would result in a broken module.

Today, every combination I've tried yesterday (and every other I can think of) yields a working module.

Sunspots?
Comment 14 Rémi Cardona (RETIRED) gentoo-dev 2012-11-28 20:47:32 UTC
Solar storm perhaps. Closing.

Thanks