Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 183526 - dev-dotnet/ikvm-0.34.0.2 fails - java.lang.outofmemoryerror (file classpath.build)
Summary: dev-dotnet/ikvm-0.34.0.2 fails - java.lang.outofmemoryerror (file classpath.b...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: dotnet project
URL: http://forums.gentoo.org/viewtopic-t-...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-06-28 14:17 UTC by Stefan Stroe
Modified: 2007-06-29 02:46 UTC (History)
3 users (show)

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


Attachments
ikvm ebuild with javac instead of ecj (ikvm-0.34.0.2.ebuild,1.21 KB, text/plain)
2007-06-28 23:39 UTC, Jurek Bartuszek (RETIRED)
Details
ikvm ebuild modified with javac heap increased to 256M (ikvm-0.34.0.2.ebuild,1.23 KB, text/plain)
2007-06-29 02:08 UTC, Bernie Hackett
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Stroe 2007-06-28 14:17:42 UTC
When emerging monodevelop-0.12 (with java use flag enabled) the dependency requires ikvm-0.34.0.2.
When emerging ikvm here is what finally happens:
__________________________________________________
[nant] /var/tmp/portage/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build
Buildfile: file:///var/tmp/portage/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build
Target framework: Mono 1.0 Profile
Target(s) specified: IKVM.GNU.Classpath.dll


jars:


classes:

[exec] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

BUILD FAILED - 0 non-fatal error(s), 1 warning(s)

/var/tmp/portage/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build(27,10):
External Program Failed: /usr/bin/ecj-3.2 (return code was 1)

Total time: 32.9 seconds.


BUILD FAILED

Nested build failed. Refer to build log for exact reason.

Total time: 44 seconds.


!!! ERROR: dev-dotnet/ikvm-0.34.0.2 failed.
Call stack:
ebuild.sh, line 1615: Called dyn_compile
ebuild.sh, line 972: Called qa_call 'src_compile'
ebuild.sh, line 44: Called src_compile
ikvm-0.34.0.2.ebuild, line 36: Called die

!!! ikvm build failed 

Reproducible: Always

Steps to Reproduce:
1. emerge ikvm (or emerge monodevelop, with java use flag enabled)

Actual Results:  
Check the description for a quote from the log.

Expected Results:  
Successful build of ikvm.

I think memory requirement for x64 systems is double than for x86. I want to find out how to modify the ebuild to instruct ecj to use more memory.
I think this would fix the ebuild's problem.
Comment 1 Stefan Stroe 2007-06-28 14:21:31 UTC
Portage 2.1.2.7 (default-linux/amd64/2007.0, gcc-4.1.2, glibc-2.5-r3, 2.6.20-gentoo-r8_vyper_v0.1 x86_64)
=================================================================
System uname: 2.6.20-gentoo-r8_vyper_v0.1 x86_64 AMD Turion(tm) 64 X2 Mobile Technology TL-52
Gentoo Base System release 1.12.9
Timestamp of tree: Wed, 27 Jun 2007 12:50:01 +0000
ccache version 2.4 [disabled]
dev-java/java-config: 1.3.7, 2.0.33-r1
dev-lang/python:     2.4.4-r4
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r7
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.17
sys-devel/gcc-config: 1.3.16
sys-devel/libtool:   1.5.23b
virtual/os-headers:  2.6.17-r2
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -mtune=athlon64 -msse3 -O2 -pipe -falign-functions=64 -fforce-addr -ftracer -funit-at-a-time"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/texmf/web2c"
CXXFLAGS="-march=athlon64 -mtune=athlon64 -msse3 -O2 -pipe -falign-functions=64 -fforce-addr -ftracer -funit-at-a-time"
DISTDIR="/usr/portage/distfiles"
FEATURES="collision-protect distlocks fixpackages metadata-transfer parallel-fetch sandbox sfperms strict userfetch"
GENTOO_MIRRORS="http://ftp.roedu.net/pub/mirrors/gentoo.org/ http://ftp.lug.ro/gentoo/ http://ftp.romnet.org/gentoo/ http://mirrors.evolva.ro/gentoo/ http://distfiles.gentoo.org"
LDFLAGS="-Wl,-O1"
LINGUAS="en ro"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp/portage"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/cross-i586-pc-linux-gnu /usr/local/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext 7zip X X509 a52 aac aalib acl acpi addbookmarks alias alsa amd64 amr aotuv apm arts autoreplace bash-completion bcp berkdb binfilter bitmap-fonts bjam bl boost branding bzip2 cairo cddb cdparanoia cdr chardet chroot cli connectionstatus contactnotes cpudetection cracklib crypt cups curl dbus dmi doc dri dts dv dvd dvdnav dvdr dvdread dynamic ecc encode epydoc erandom exif fam fbcon firefox flac fltk fontconfig ftp fusion gadu gdbm ggi gif gpm groupwise gstreamer gtk hal hardened highlight history hpn iconv icu idea idn ieee1394 ipv6 irc isdnlog ithreads java javascript jingle jpeg jpeg2k kde lcms ldap libcaca lm_sensors logrotate lua lzo mad mailwrapper md5sum midi mmx mng modplug mono mp2 mp3 mpeg mudflap musepack nas ncurses nforce2 nfs nls nowlistening nptl nptlonly nsplugin numeric nvidia objc objc++ objc-gc odbc odk offensive ogg openal openexr opengl openmp oss pcmcia pcre perl pic pmu png pnm pppd pyste python qt3 quicktime rar readline reflection rtc sametime sdl session slang slp sms sndfile sockets socks5 sound speex spell spl srt sse sse2 ssl statistics svg swig symlink sysfs tcl tcpd texteffect tga theora threads tidy tiff timidity tivo tk translator truetype truetype-fonts tta type1-fonts unicode usb userlocales v4l v4l2 vorbis wavpack webpresence winpopup wma x264 xanim xcomposite xinerama xml xorg xpm xscreensaver xvid xvmc yahoo zlib zoran" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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 mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en ro" USERLAND="GNU" VIDEO_CARDS="fbdev nvidia vesa vga"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 2 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-28 14:32:12 UTC
Unfortunately I personally have no amd64 box, but I've found this:

http://www.mail-archive.com/classpath@gnu.org/msg14190.html
and response:
http://www.mail-archive.com/classpath@gnu.org/msg14191.html

If you are willing to check if it works for you, let me know what the results are, please.
Comment 3 Stefan Stroe 2007-06-28 15:11:05 UTC
Could you give me a little hand. I am new to this ...

1)

I think I must modify the /usr/share/java-config-2/launcher.bash, to add the -mx384M paramether. Am I right ?
(I will use -mx512M on my machine instead)

2)

If the above is correct in what variable/what line shall I put it ?

3)

Is the paramether correct ? I thought it was -Xm512m

Thank you for bearing with me...
Comment 4 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-28 16:12:26 UTC
I wouldn't touch anything outside sandboxed environment. Check out the classpath/classpath.build file, you should see an entry beginning with '<exec program="ecj"', try fiddling with commandline parameter, maybe that will help.
Comment 5 Stefan Stroe 2007-06-28 18:15:00 UTC
I have found the buildfile: .... /ikvm-0.34.0.2/classpath/classpath.build
and modified the line:

- <exec program="/usr/bin/ecj-3.2" commandline="-g -1.5 -nowarn -cp mscorlib.jar${pathsep}System.jar @allsources.lst" useruntimeengine="false" />
+ <exec program="/usr/bin/ecj-3.2" commandline="-Xmx512M -g -1.5 -nowarn -cp mscorlib.jar${pathsep}System.jar @allsources.lst" useruntimeengine="false" />

with no success.

As I found on:

http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm

.... _______________________________________________________________
Ignored options (for compatibility with javac options)
-J<option> 	pass option to the virtual machine
-X<option> 	specify non-standard option. -Xemacs is not ignored.
-X 	print non-standard options and exit
-O 	optimize for execution time
________________________________________________________________ ....

I think I failed with this approach. There must be another option to set memory usage, but it's not so obvious as the compile time parameter.
How do they make that setup ?

I ran some commands on my box:

java-config -f : 
sun-jdk-1.5

java-config -L : 
The following VMs are available for generation-2:
1)	Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2)	Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
*)	Sun JDK 1.5.0.11 [sun-jdk-1.5]

java-config -v :
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_11-b03, mixed mode)

If my presumption is correct, during the compile Sun's Java Virtual Machine is used. Is there a way to set memory usage to this (as long as ecj ignores the setting) ?
Comment 6 Bernie Hackett 2007-06-28 18:34:49 UTC
This problem also exists on x86. It fails for me on two desktops and a laptop (basically all the machines I have gentoo on.) I have tried to build with all three versions of eclipse-ecj in the tree.

A short term solution is to just use ikvm-bin but yesterday I had to download the zip file from sourceforge manually because portage couldn't fetch it for some reason.

ebuild failure results below:

     [nant] /var/tmp/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build
            Buildfile: file:///var/tmp/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build
            Target framework: Mono 1.0 Profile
            Target(s) specified: IKVM.GNU.Classpath.dll


            jars:


            classes:

                 [exec] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
                 [exec]  at org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsCharArray(Util.java:204)
                 [exec]  at org.eclipse.jdt.internal.compiler.util.Util.getFileCharContent(Util.java:70)
                 [exec]  at org.eclipse.jdt.internal.compiler.batch.CompilationUnit.getContents(CompilationUnit.java:58)
                 [exec]  at org.eclipse.jdt.internal.compiler.batch.Main$2.acceptResult(Main.java:2506)
                 [exec]  at org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:502)
                 [exec]  at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:430)
                 [exec]  at org.eclipse.jdt.internal.compiler.batch.Main.performCompilation(Main.java:2697)
                 [exec]  at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1272)
                 [exec]  at org.eclipse.jdt.internal.compiler.batch.Main.main(Main.java:1016)

            BUILD FAILED - 0 non-fatal error(s), 10 warning(s)

            /var/tmp/portage/dev-dotnet/ikvm-0.34.0.2/work/ikvm-0.34.0.2/classpath/classpath.build(27,10):
            External Program Failed: /usr/bin/ecj-3.2 (return code was 1)

            Total time: 19.1 seconds.


BUILD FAILED

Nested build failed.  Refer to build log for exact reason.

Total time: 25.4 seconds.


!!! ERROR: dev-dotnet/ikvm-0.34.0.2 failed.
Call stack:
  ebuild.sh, line 1637:   Called dyn_compile
  ebuild.sh, line 983:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  ikvm-0.34.0.2.ebuild, line 36:   Called die

!!! ikvm build failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/dev-dotnet/ikvm-0.34.0.2/temp/build.log'.
Comment 7 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-28 19:36:47 UTC
It looks like a common bug:

http://permalink.gmane.org/gmane.comp.java.classpath.devel/9181

maybe our java team can help us here?
Comment 8 Bernie Hackett 2007-06-28 20:05:36 UTC
It's a problem with the new gnu classpath:

http://developer.classpath.org/mediation/ClasspathDeveloperGuidelines

Maybe the solution is to add classpath-0.95 as a depend (instead of building it in the same ebuild), that way classpath can just be built with javac and ikvm can be built with eclipse-ecj (does it have to be built that way?)

Could the classpath build section be changed to use javac?
Comment 9 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-28 23:39:50 UTC
Created attachment 123343 [details]
ikvm ebuild with javac instead of ecj

Could you please try this ebuild and report your results here?
Comment 10 Bernie Hackett 2007-06-29 01:19:42 UTC
(In reply to comment #9)
> Created an attachment (id=123343) [edit]
> ikvm ebuild with javac instead of ecj
> 
> Could you please try this ebuild and report your results here?
> 

Still no go. I was able to get it to compile by editing
/usr/bin/ecj-3.2 like this:

- gjl_main="org.eclipse.jdt.internal.compiler.batch.Main"
+ gjl_main="-Xmx400m org.eclipse.jdt.internal.compiler.batch.Main"

After that it compiles and installs perfectly. Not a very useful solution to the bigger problem though.
Comment 11 Bernie Hackett 2007-06-29 02:08:27 UTC
Created attachment 123352 [details]
ikvm ebuild modified with javac heap increased to 256M

This fixes it. Still using javac but giving it one more option -J-mx256M. This increases the heap size javac will use to 256M solving the classpath compile problem.
Comment 12 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-29 02:13:13 UTC
Sorry, I forgot to add the -J option (which was the reason for moving to javac, hence ecj/jikes simply ignore this). Could you please try this with some smaller values (192, 160, 128 and so on until build fails)? Thanks in advance!
Comment 13 Bernie Hackett 2007-06-29 02:18:00 UTC
(In reply to comment #12)
> Sorry, I forgot to add the -J option (which was the reason for moving to javac,
> hence ecj/jikes simply ignore this). Could you please try this with some
> smaller values (192, 160, 128 and so on until build fails)? Thanks in advance!
> 

128 is too small. 160 seems to work fine. I think this problem may be solved...
Comment 14 Jurek Bartuszek (RETIRED) gentoo-dev 2007-06-29 02:45:04 UTC
So be it. Fixed in CVS, thanks for your input!
Comment 15 Bernie Hackett 2007-06-29 02:46:16 UTC
(In reply to comment #14)
> So be it. Fixed in CVS, thanks for your input!
> 

Any time.