Mailinglist Archive: opensuse-buildservice (244 mails)

< Previous Next >
[opensuse-buildservice] Re: qemu Cross Compilation Instructions
  • From: Troy Telford <ttelford.groups@xxxxxxxxx>
  • Date: Thu, 21 Jun 2012 16:55:43 -0600
  • Message-id: <js08pf$ajv$1@dough.gmane.org>
On 2012-06-21 19:39:18 +0000, Adrian Schröter said:

I don't know if the segfault is due to a QEMU issue, if I'm emulating
the wrong processor arch, or something else entirely at this point.

I would think it was caused by qemu. Do you use the version from openSUSE?
Alex did plenty of bugfixes to support arm builds ...

At this point, I'm not sure how to interpret what I'm seeing, so I'll try to be thorough:

- I am using the following packages from the openSUSE:Factory:ARM project: (dated today)
(http://download.opensuse.org/repositories/openSUSE:/Factory:/ARM/standard/x86_64/)
qemu-accel-armv7hl-0.2-84.1.x86_64.rpm
qemu-linux-user-1.1.0-89.1.x86_64.rpm

I'm building for Fedora 17 'armhfp'; I have no issues with F17 & the 'arm' architecure.

The behavior I'm seeing is not something I can explain. It's more or less identical between worker nodes and an 'osc local' build. - the difference being a core dump is generated on the worker nodes.

[27/54] preinstalling qemu-linux-user...
.
.
.
[45/54] preinstalling qemu-accel-armv7hl...
.
.
.
[51/54] preinstalling util-linux...
[52/54] preinstalling rpm...
[53/54] preinstalling rpm-libs...
[54/54] preinstalling rpm-sign...
initializing rpm db...
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
/var/run/obs/worker/1/build/init_buildsystem: line 233: 22581 Segmentation fault chroot $BUILD_ROOT rpm --initdb

Now for the strange bit:
n003:/ # chroot /var/tmp/obs_workers/root_1/ rpm --initdb
warning: read(/proc/cpuinfo) failed
warning: read(/proc/cpuinfo) failed
n003:/ # echo $?
0
n003:/ #

If executed from the build script, I get a core dump. If I run chroot directly, it doesn't.

I checked to see if the binary was in fact the ARM binary:
n003:/ # file /var/tmp/obs_workers/root_1/bin/rpm
/var/tmp/obs_workers/root_1/bin/rpm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.32, dynamically linked (uses shared libs), stripped

So, it is an ARM binary, and it is running just fine.

Additionally, I can simply execute "chroot /var/tmp/obs_workers/root_1 bin/bash" and get a bash prompt inside the chroot - and it appears that qemu is being used to run all of the binaries.

n003:/ # uname -m
x86_64
n003:/ # chroot /var/tmp/obs_workers/root_1/ /bin/bash
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
bash-4.2# uname -m
armv7l
bash-4.2#

I have to say this is pretty slick - kudos to whomever figured that one out!

I can easily retrieve core dumps; but I'm not sure if they would be useful at this point - or whom to send them to.
--
Troy Telford


--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous Next >