Bug 3558

Summary: guile fails to compile in world build - maybe parallelism issue
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Saul Wold <sgw>
Component: devtools / tool chainAssignee: Bogdan Marinescu <bogdan.a.marinescu>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: Medium+ CC: meta.mr.watcher, meta.watcher, ross.burton
Version: 1.4   
Target Milestone: 1.4 M2   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---

Description Saul Wold 2012-12-10 22:13:58 UTC
This looks like it might be a parallelism issue with Guile.

| make[2]: Entering directory `/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/work/i586-poky-linux/guile/2.0.6-r2/guile-2.0.6/libguile'
| \
| if [ "yes" = "yes" ]; then \
| 	gcc -DHAVE_CONFIG_H  -I.. \
| 	   -c -o gen-scmconfig.o gen-scmconfig.c; \
| bogdan.a.marinescu@intel.comelse \
| 	i586-poky-linux-gcc  -m32   -march=i586 --sysroot=/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86 -DHAVE_CONFIG_H   -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -Wall -Wmissing-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wswitch-enum -fno-strict-aliasing -fvisibility=hidden -O2 -pipe -g -feliminate-unused-debug-types -c -o gen-scmconfig.o gen-scmconfig.c; \
| fi
| /bin/grep '^VM_DEFINE' vm-i-system.c > vm-i-system.i
| /bin/grep '^VM_DEFINE' vm-i-scheme.c > vm-i-scheme.i
| /bin/grep '^VM_DEFINE' vm-i-loader.c > vm-i-loader.i
| \
| rm -f gen-scmconfig; \
| if [ "yes" = "yes" ]; then \
| 	gcc -o gen-scmconfig gen-scmconfig.o; \
| else \
| 	../i586-poky-linux-libtool  --tag=CC   --mode=link i586-poky-linux-gcc  -m32   -march=i586 --sysroot=/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86 -Wall -Wmissing-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wswitch-enum -fno-strict-aliasing -fvisibility=hidden -O2 -pipe -g -feliminate-unused-debug-types  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o gen-scmconfig gen-scmconfig.o  -lcrypt -lm ; \
| fi
| (rm -f scmconfig.h.tmp; \
| cat ./scmconfig.h.top > scmconfig.h.tmp; \
| ./gen-scmconfig >> scmconfig.h.tmp; \
| chmod 444 scmconfig.h.tmp; \
| rm -f scmconfig.h; \
| mv scmconfig.h.tmp scmconfig.h)
| ../libguile/guile-snarf -o alist.x alist.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o arbiters.x arbiters.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o array-handle.x array-handle.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o array-map.x array-map.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o arrays.x arrays.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o async.x async.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o backtrace.x backtrace.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o boolean.x boolean.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o bitvectors.x bitvectors.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o bytevectors.x bytevectors.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o chars.x chars.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o control.x control.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o continuations.x continuations.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o debug.x debug.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o deprecated.x deprecated.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o deprecation.x deprecation.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o dynl.x dynl.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o dynwind.x dynwind.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o eq.x eq.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o error.x error.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o eval.x eval.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o evalext.x evalext.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o expand.x expand.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o extensions.x extensions.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| ../libguile/guile-snarf -o feature.x feature.c -DHAVE_CONFIG_H -DBUILDING_LIBGUILE=1 -I.. -I.. -I../lib -I../lib -I/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/sysroots/qemux86/usr/lib/libffi-3.0.11/include    -O2 -pipe -g -feliminate-unused-debug-types
| dynl.c:54:30: fatal error: libguile/libpath.h: No such file or directory
| compilation terminated.
| make[2]: *** [dynl.x] Error 1
| make[2]: *** Waiting for unfinished jobs....
| mv libpath.tmp libpath.h
| make[2]: Leaving directory `/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/work/i586-poky-linux/guile/2.0.6-r2/guile-2.0.6/libguile'
| make[1]: *** [all-recursive] Error 1
| make[1]: Leaving directory `/srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/work/i586-poky-linux/guile/2.0.6-r2/guile-2.0.6'
| make: *** [all] Error 2
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (see /srv/home/pokybuild/yocto-autobuilder/yocto-slave/nightly-world/build/build/tmp/work/i586-poky-linux/guile/2.0.6-r2/temp/log.do_compile.32055 for further information)
NOTE: recipe guile-2.0.6-r2: task do_compile: Failed
Comment 1 Bogdan Marinescu 2013-01-09 08:25:08 UTC
I can't reproduce this. How is your parallel build configured (BB_NUMBER_THREADS/PARALLEL_MAKE)? Did this error appear on an autobuilder?
Comment 2 Ross Burton 2013-01-09 08:29:21 UTC
Yes, it was on the autobuilder (paths with /srv/home/pokybuild/yocto-autobuilder are the give-away).

Parallism problems are generally very rare and replicating isn't always easy... the telepathy-glib failures happened roughly once a month.
Comment 3 Bogdan Marinescu 2013-01-09 08:30:08 UTC
Waiting for reproducibility instructions.
Comment 4 Ross Burton 2013-01-09 08:54:04 UTC
Reproduction instructions: build guile.  If it succeeds, try again.

When debugging problems like this which are rare, you have to start with the makefiles.  Look at the failing build log and try and work out how it could have happened.  Often it's obvious as to what the problem is because there's a missing dependency and then you can construct the failure by invoking rules manually in a specific order.

Don't spend all day on this, but solving random failures is always useful.
Comment 5 Bogdan Marinescu 2013-01-09 12:13:20 UTC
Patch sent (guile: add explicit dependency to avoid parallel build issue).
Comment 6 Bogdan Marinescu 2013-01-10 11:28:16 UTC
Patch merged.