[Buildroot] Analysis of build results for 2017-02-26: librsvg failure
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Mon Feb 27 23:01:23 UTC 2017
Hello,
Adding Gustavo on this one, there is some gdk-pixbuf stuff involved.
On Mon, 27 Feb 2017 14:28:54 +0100, Thomas Petazzoni wrote:
> > x86_64 | librsvg-2.40.16 | NOK | http://autobuild.buildroot.net/results/393145bc9bcb93d6df55ec8c63725c3d9a299957
> > x86_64 | librsvg-2.40.16 | NOK | http://autobuild.buildroot.net/results/60af583e52d9ff8efff1bc455e4f842721c5807c
> > x86_64 | librsvg-2.40.16 | NOK | http://autobuild.buildroot.net/results/492aaf78f4d47d80bb813810a54121799a5c8d46
>
> Makefile:807: recipe for target 'gdk-pixbuf-loaders' failed
>
> at installation time. It only happens with that specific x86-64
> toolchain: http://autobuild.buildroot.net/?reason=librsvg-2.40.16.
>
> Could you be something like the host is x86-64/glibc and the target is
> x86-64/glibc, and it confuses something?
Adding Gustavo in Cc on this one. On my x86-64 machine, the following
defconfig reproduces the issue:
BR2_x86_64=y
BR2_x86_steamroller=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_LIBRSVG=y
# BR2_TARGET_ROOTFS_TAR is not set
The command that causes the installation failure is:
/home/thomas/projets/buildroot/output/host/usr/bin/gdk-pixbuf-query-loaders ./libpixbufloader-svg.la && /home/thomas/projets/buildroot/output/host/usr/bin/gdk-pixbuf-query-loaders
Interestingly, when run outside of the build process, it is successful
(echo $? says 0). However, when run by the package Makefile, it fails
with Error 132. It turns out that it's an "Illegal instruction" error:
( strace -o /tmp/pouet.log /home/thomas/projets/buildroot/output/host/usr/bin/gdk-pixbuf-query-loaders ./libpixbufloader-svg.la && /home/thomas/projets/buildroot/output/host/usr/bin/gdk-pixbuf-query-loaders)
/bin/bash: line 1: 31690 Illegal instruction strace -o /tmp/pouet.log /home/thomas/projets/buildroot/output/host/usr/bin/gdk-pixbuf-query-loaders ./libpixbufloader-svg.la
Makefile:807: recipe for target 'gdk-pixbuf-loaders' failed
make[4]: *** [gdk-pixbuf-loaders] Error 132
The strace (which was added by me), give:
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0V\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1088952, ...}) = 0
mmap(NULL, 3178744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8df2576000
mprotect(0x7f8df267e000, 2093056, PROT_NONE) = 0
mmap(0x7f8df287d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x107000) = 0x7f8df287d000
close(3) = 0
mprotect(0x7f8df287d000, 4096, PROT_READ) = 0
mprotect(0x7f8df361b000, 4096, PROT_READ) = 0
mprotect(0x7f8df556d000, 4096, PROT_READ) = 0
--- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x7f8df3d26f02} ---
+++ killed by SIGILL +++
So very very early in the program execution, it aborts with an illegal
instruction. I dumped the environment from the Makefile right before
running this command, and couldn't see anything obviously wrong.
Any idea?
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
More information about the buildroot
mailing list