[oe] meta-java: Problems creating java image inside VM? openjdk-6 build gets killed by host OOM killer.

Iorga, Cristian cristian.iorga at intel.com
Wed Jan 21 09:45:35 UTC 2015


Hi Colin,

I think I have a fix for this, please contact me off the list to try it out.
( cristian.iorga at intel.com )
It is about the proper invocation of qemu user mode.

Regards,
Cristian Iorga
Yocto Project
Intel Corporation

-----Original Message-----
From: openembedded-devel-bounces at lists.openembedded.org [mailto:openembedded-devel-bounces at lists.openembedded.org] On Behalf Of Colin Smiley
Sent: Monday, January 12, 2015 2:57 PM
To: openembedded-devel at lists.openembedded.org
Subject: [oe] meta-java: Problems creating java image inside VM? openjdk-6 build gets killed by host OOM killer.



I sent the following to the main Yocto project email alias, but since this deals with open-embedded recipes, I'll send it here as well.


I need help.

I am trying to use yocto and bitbake to create a QEMU-x86 image containing the openjdk-6 jvm. I am using open-embedded and meta-java for this.

Since I am running on a Mac, I am attempting creation from inside a VMWare VM (similar to the Yocto Build Appliance). I have tried using Ubuntu 14.04 Server, Fedora Core 18, 19, & 20 and met with the same results. My VM has
4 cores, and 8GB of RAM, and with the OOM killer involved I've tried giving it 10GB and 12GB as well.

With all VMs, the failure is the same. OOM killer kills the qemu-i386 when running the following:

GENERATING
/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/icedtea6-1.11.9/build/generated.build/sun/awt/X11/generator/si
zes.32


Here are the steps and configuration I follow:

1) Create a VM with either Ubuntu or Fedora (failure has been same for
all). VM has 50GB of disk and 8GB of RAM (although have tried increasing
to 10GB and 12GB with same result).

2) Perform os updates per yocto page here:
http://www.yoctoproject.org/docs/1.7/ref-manual/ref-manual.html#required-pa
ckages-for-the-host-development-system

3) Check out appropriate version and branches, per meta-java readme.
$ git clone http://git.yoctoproject.org/git/poky
$ cd poky
$ git checkout -b daisy origin/daisy
$ git clone git://git.openembedded.org/meta-openembedded
$ cd meta-openembedded
$ git checkout -b daisy origin/daisy
$ cd ..
$ git clone git://git.yoctoproject.org/meta-java

4) Since I only want java 6, copy meta-java¹s java-test-image.bb recipe,
calling it java-6-test-image.bb. It reads:

LICENSE = "MIT"
inherit core-image
IMAGE_LINGUAS = " "
IMAGE_INSTALL = "busybox modutils-initscripts initscripts opkg udev
sysvinit netbase base-files base-passwd busybox-hwclock \
                 ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}
\
openjdk-6-jre openjdk-6-vm-zero openjdk-6-vm-jamvm openjdk-6-vm-cacao \
                 strace dropbear binutils \
                 classpath \
                 classpath-common \
                 classpath-examples \
                 classpath-tools \
                 jamvm \
                 cacao \
"

5) Set up environment with `. ./oe-init-build-env`


6) Modify build/conf/local.conf and add (I have tried setting threads and
parallel_make to 1, 2, 4, and 8 with the same results):
# Added for OpenJDK6
PREFERRED_PROVIDER_virtual/java-initial = "cacao-initial"
PREFERRED_PROVIDER_virtual/java-native = "jamvm-native"
PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"
PREFERRED_VERSION_openjdk-6-jre = "6b24-1.11.9"
PREFERRED_PROVIDER_openjdk-6-jre = "openjdk-6-jre"
PREFERRED_VERSION_icedtea6-native = "1.8.11"
# The maximum number of tasks BitBake should run in parallel at any one
time
BB_NUMBER_THREADS = "8"
# Extra options passed to the make command during the do_compile task in
order to specify parallel compilation on the local build host.
PARALLEL_MAKE = "-j 8"

7) Modify build/conf/bblayers.conf

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/csmiley/yocto/poky/meta \
  /home/csmiley/yocto/poky/meta-yocto \
  /home/csmiley/yocto/poky/meta-yocto-bsp \
  /home/csmiley/yocto/poky/meta-openembedded/meta-oe \
  /home/csmiley/yocto/poky/meta-java \
  "
BBLAYERS_NON_REMOVABLE ?= " \
  /home/csmiley/yocto/poky/meta \
  /home/csmiley/yocto/poky/meta-yocto \
  "

8) Run `bitbake java-6-test-image`. This runs until compilation failure,
due to a date bug introduced in meta-java on 12/31/14, with:

/home/csmiley/yacto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/build/bootstrap/jdk1.6.0/bin/java  -client -Xmx896m -Xms128m
-XX:PermSize=32m -XX:MaxPermSize=160m -jar
/home/csmiley/yacto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/build/openjdk.build-ecj/btjars/generatecurrencydata.jar -o
/home/csmiley/yacto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/build/openjdk.build-ecj/lib/currency.data.temp \
| 	< ../../../src/share/classes/java/util/CurrencyData.properties
| Error: time is more than 10 years from present: 1104530400000
| java.lang.RuntimeException: time is more than 10 years from present:
1104530400000
| 	at 
build.tools.generatecurrencydata.GenerateCurrencyData.makeSpecialCaseEntry(
GenerateCurrencyData.java:285)
| 	at 
build.tools.generatecurrencydata.GenerateCurrencyData.buildMainAndSpecialCa
seTables(GenerateCurrencyData.java:225)
| 	at 
build.tools.generatecurrencydata.GenerateCurrencyData.main(GenerateCurrency
Data.java:154)

9) Fix above problem by editing all instances of
build/tmp/work/work/.../CurrencyData.properties to get rid of Turkish
Currency Issue.


10) Restart by running `bitbake java-6-test-image`. This now fails when
doing the generation on Sizes.32 with:
| i586-poky-linux-gcc  -m32 -march=i586
--sysroot=/home/csmiley/yocto/poky/build/tmp/sysroots/qemux86  -O2 -pipe
-g -feliminate-unused-debug-types   -fno-strict-aliasing -fPIC -W -Wall
-Wno-unused -Wno-parentheses -m32 -D_LITTLE_ENDIAN -g   -DARCH='"i586"'
-Di586 -DLINUX -DRELEASE='"1.6.0_24"' -D_LARGEFILE64_SOURCE -D_GNU_SOURCE
-D_REENTRANT -I. 
-I/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b2
4-1.11.9-r22.1/icedtea6-1.11.9/build/openjdk.build-ecj/tmp/sun/sun.awt.X11/
xawt/CClassHeaders -I../../../src/solaris/javavm/export
-I../../../src/share/javavm/export -I../../../src/share/javavm/include
-I../../../src/solaris/javavm/include -I../../../src/share/native/common
-I../../../src/solaris/native/common
-I../../../src/share/native/sun/awt/X11
-I../../../src/solaris/native/sun/awt/X11
-I/home/csmiley/yocto/poky/build/tmp/sysroots/qemux86/usr/include -DXAWT
-DXAWT_HACK 
-I/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b2
4-1.11.9-r22.1/icedtea6-1.11.9/build/openjdk.build-ecj/tmp/sun/sun.awt.X11/
xawt/../../sun.awt/awt/CClassHeaders -I../../../src/solaris/native/sun/awt
-I../../../src/solaris/native/sun/xawt
-I../../../src/solaris/native/sun/jdga
-I../../../src/share/native/sun/awt/debug
-I../../../src/share/native/sun/awt/image/cvutils
-I../../../src/share/native/sun/java2d
-I../../../src/share/native/sun/java2d/loops
-I../../../src/share/native/sun/awt/image/cvutils
-I../../../src/share/native/sun/awt/image
-I../../../src/share/native/sun/font
-I../../../src/solaris/native/sun/java2d
-I../../../src/share/native/sun/java2d/pipe
-I../../../src/share/native/sun/java2d/opengl
-I../../../src/solaris/native/sun/java2d/opengl
-I../../../src/solaris/native/sun/java2d/x11
-I../../../src/share/native/sun/dc/path
-I../../../src/share/native/sun/dc/doe
-I../../../src/share/native/sun/awt/alphacomposite
-I../../../src/share/native/sun/awt/medialib
-I../../../src/solaris/native/sun/awt/medialib
-I../../../src/solaris/native/sun/font -I../../../src/share/native/sun/awt
-I../../../src/solaris/native/sun/awt -o
/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/icedtea6-1.11.9/build/generated.build/sun/awt/X11/generator/si
zer.32 
/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/icedtea6-1.11.9/build/generated.build/sun/awt/X11/generator/si
zer.32.c
| GENERATING 
/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24-
1.11.9-r22.1/icedtea6-1.11.9/build/generated.build/sun/awt/X11/generator/si
zes.32
| Killed
| make[5]: *** 
[/home/csmiley/yocto/poky/build/tmp/work/i586-poky-linux/openjdk-6-jre/6b24
-1.11.9-r22.1/icedtea6-1.11.9/build/generated.build/sun/awt/X11/generator/s
izes.32] Error 137



System console has the message:
Jan 11 02:00:47 yoctomatic kernel: [59600.572556] Out of memory: Kill
process 69268 (qemu-i386) score 944 or sacrifice child
Jan 11 02:00:47 yoctomatic kernel: [59600.573756] Killed process 69268
(qemu-i386) total-vm:15519392kB, anon-rss:7674264kB, file-rss:32kB



I have tried the following while diagnosing:

* Build core-image-minimal (works)
* Build java-6-test-image without java/jdk portions (dependencies only)
(works)
* Builds varying number of threads/parallel make, memory of VM, OS of VM
(all break in same place).

I would like some help diagnosing this. Please help!


Thanks,


Colin


-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel at lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel



More information about the Openembedded-devel mailing list