jamvm-general Mailing List for JamVM (Page 9)
Brought to you by:
rlougher
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(5) |
Feb
|
Mar
(33) |
Apr
(12) |
May
(18) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(33) |
Oct
(16) |
Nov
(35) |
Dec
(25) |
2006 |
Jan
(44) |
Feb
(1) |
Mar
(38) |
Apr
(14) |
May
(42) |
Jun
(8) |
Jul
(9) |
Aug
(5) |
Sep
(1) |
Oct
(16) |
Nov
(14) |
Dec
(16) |
2007 |
Jan
(3) |
Feb
(17) |
Mar
(19) |
Apr
(16) |
May
(7) |
Jun
(17) |
Jul
(22) |
Aug
(7) |
Sep
|
Oct
(28) |
Nov
(15) |
Dec
(4) |
2008 |
Jan
(4) |
Feb
(21) |
Mar
(16) |
Apr
(11) |
May
(18) |
Jun
(25) |
Jul
(8) |
Aug
(14) |
Sep
(5) |
Oct
(35) |
Nov
(8) |
Dec
(30) |
2009 |
Jan
(2) |
Feb
(2) |
Mar
(8) |
Apr
(9) |
May
(14) |
Jun
(9) |
Jul
(10) |
Aug
(7) |
Sep
(8) |
Oct
(4) |
Nov
(12) |
Dec
(2) |
2010 |
Jan
(12) |
Feb
(16) |
Mar
(16) |
Apr
(5) |
May
(4) |
Jun
(4) |
Jul
(3) |
Aug
(11) |
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(4) |
2011 |
Jan
(1) |
Feb
|
Mar
(43) |
Apr
(1) |
May
(1) |
Jun
(13) |
Jul
(21) |
Aug
(11) |
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
(5) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(19) |
Jul
(4) |
Aug
|
Sep
(1) |
Oct
|
Nov
(2) |
Dec
(12) |
2013 |
Jan
|
Feb
(1) |
Mar
(10) |
Apr
(22) |
May
(1) |
Jun
(3) |
Jul
|
Aug
(2) |
Sep
(6) |
Oct
(3) |
Nov
(4) |
Dec
(3) |
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(11) |
Jun
(4) |
Jul
(1) |
Aug
(4) |
Sep
|
Oct
(16) |
Nov
|
Dec
|
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
(2) |
Mar
(1) |
Apr
(4) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
From: Robert L. <rob...@gm...> - 2011-06-10 20:55:48
|
Hi Patrick, On 10 June 2011 20:36, Patrick Martin <pjm...@yc...> wrote: > Hello everyone, > I have been trying to compile JamVM 1.5.4 on my Phidget SBC (it comes with > 1.5.1) using the buildroot for the device. I figured out how to get > classpath compiled, and JamVM compiled. However, after compiling, the linker > fails: > rm -fr .libs/libjvm.lax > mkdir .libs/libjvm.lax > rm -fr .libs/libjvm.lax/libcore.a > mkdir .libs/libjvm.lax/libcore.a > (cd .libs/libjvm.lax/libcore.a && > /home/pjmartin/Desktop/buildroot-phidgetsbc_1.0.4.20110527/output/staging/usr/bin/arm-unknown-linux-uclibcgnueabi-ar > x > /home/pjmartin/Desktop/buildroot-phidgetsbc_1.0.4.20110527/output/build/jamvm-1.5.4/src/./.libs/libcore.a) > ./.libs/libcore.a(thread.o): In function `threadSelf': > thread.c:(.text+0x94): undefined reference to `__tls_get_addr' > ./.libs/libcore.a(thread.o): In function `setThreadSelf': > thread.c:(.text+0xc4): undefined reference to `__tls_get_addr' > collect2: ld returned 1 exit status > make[4]: *** [jamvm] Error 1 > > Has anyone seen this error, or know what may be causing the linker to croak? > I would appreciate any help! > It looks like there's a problem with thread local storage support. Try running configure with --disable-tls. Rob. P.S. I'll be interested in some more details of your toolchain, etc. Configure tries to guess whether tls is supported. This is difficult when cross-compiling as you can't run anything on the target, so it's very conservative and in this case only enables tls on linux/glibc. But your toolchain looks to be uclibc based, so I'm curious why it failed. > Patrick > > -- > Patrick Martin, PhD > Assistant Professor > Electrical and Computer Engineering > Department of Physical Sciences > York College of Pennsylvania > www.drpatrickmartin.com > > This information is intended solely for the use of the individual to whom it > is addressed. > Any review, disclosure, copying, distribution or use of this e-mail > communication by > others is strictly prohibited. If you are not the intended recipient, > please notify us > immediately by returning this message to the sender and delete all copies. > > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > > |
From: Patrick M. <pjm...@yc...> - 2011-06-10 20:08:16
|
Hello everyone, I have been trying to compile JamVM 1.5.4 on my Phidget SBC (it comes with 1.5.1) using the buildroot for the device. I figured out how to get classpath compiled, and JamVM compiled. However, after compiling, the linker fails: rm -fr .libs/libjvm.lax mkdir .libs/libjvm.lax rm -fr .libs/libjvm.lax/libcore.a mkdir .libs/libjvm.lax/libcore.a (cd .libs/libjvm.lax/libcore.a && /home/pjmartin/Desktop/buildroot-phidgetsbc_1.0.4.20110527/output/staging/usr/bin/arm-unknown-linux-uclibcgnueabi-ar x /home/pjmartin/Desktop/buildroot-phidgetsbc_1.0.4.20110527/output/build/jamvm-1.5.4/src/./.libs/libcore.a) ./.libs/libcore.a(thread.o): In function `threadSelf': thread.c:(.text+0x94): undefined reference to `__tls_get_addr' ./.libs/libcore.a(thread.o): In function `setThreadSelf': thread.c:(.text+0xc4): undefined reference to `__tls_get_addr' collect2: ld returned 1 exit status make[4]: *** [jamvm] Error 1 Has anyone seen this error, or know what may be causing the linker to croak? I would appreciate any help! Patrick -- Patrick Martin, PhD Assistant Professor Electrical and Computer Engineering Department of Physical Sciences York College of Pennsylvania www.drpatrickmartin.com This information is intended solely for the use of the individual to whom it is addressed. Any review, disclosure, copying, distribution or use of this e-mail communication by others is strictly prohibited. If you are not the intended recipient, please notify us immediately by returning this message to the sender and delete all copies. |
From: Ezequiel G. <ele...@ya...> - 2011-06-08 22:28:17
|
Hi Robert, and thanks. It did help. Is there any way to override those paths on compile time (without changing my configure line)? I have already created links but still getting the same error. Here is the relevant part of strace command: open("/usr/share/classpath/glibj.zip", O_RDONLY) = 3 read(3, "PK\3\4", 4) = 4 lseek(3, 0, SEEK_END) = 9831660 old_mmap(NULL, 9831660, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2a7bc000 old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 old_mmap(NULL, 4100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 munmap(0x2b11d000, 2052) = 0 old_mmap(NULL, 8196, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b120000 munmap(0x2b11e000, 4100) = 0 old_mmap(NULL, 16388, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b123000 munmap(0x2b120000, 8196) = 0 old_mmap(NULL, 32772, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b128000 munmap(0x2b123000, 16388) = 0 old_mmap(NULL, 65540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b131000 munmap(0x2b128000, 32772) = 0 old_mmap(NULL, 131076, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b142000 munmap(0x2b131000, 65540) = 0 old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 old_mmap(NULL, 516, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 write(2, "Exception occurred while VM init"..., 42Exception occurred while VM initialising. ) = 42 write(2, "java/lang/NoClassDefFoundError: "..., 66java/lang/NoClassDefFoundError: jamvm/java/lang/VMClassLoaderData ) = 66 exit_group(1) So, I went one step further and unzipped the files classes.zip, tools.zip and glib.zip. Everything worked correctly in that case and my "Hello world" message got printed. However I had to move Hello.class to /usr/share/classpath, because jamvm wasn't founding it. I will be reading some stuff to understand how classes are being searched by VMs. I would love some explanations though :D Anyway, Would you like me to send you the patches I did for sh4? They're very basic since I'm using ffi for native invokations. Great work Robert, this jamvm works great and is very well written and documented. I have another question: I haven't found a way to control trace messaging. I mean, if I configure with trace I always see the trace messages, and if I configure without trace I can't get any. I am very (very) happy to see jamvm running on sh4 :) Again, thanks for your great work. Greetings... Ezequiel. --- El mié 8-jun-11, Robert Lougher <rob...@gm...> escribió: > De: Robert Lougher <rob...@gm...> > Asunto: Re: [Jamvm-general] Cross compiling jamvm for sh4, almost there (part 2) > Para: "Ezequiel García" <ele...@ya...> > Cc: jam...@li... > Fecha: miércoles, 8 de junio de 2011, 18:02 > Hi Ezequiel, > > 2011/6/8 Ezequiel García <ele...@ya...>: > > More news on this... > > > > I have succesfully (?) cross-compiled gnu classpath > and jamvm for sh4 architecture. The configure lines are > this: > > > > for gnu classpath (0.98) > > > > $ ./configure --host=sh4-linux --build=i686-linux > --target=sh4-linux --prefix=/target/usr/ --without-x > --disable-gtk-peer --disable-Werror --without-gjdoc > --enable-jni --disable-examples --disable-plugin > --disable-gconf-peer --disable-alsa --disable-gjdoc > > > > for jamvm (1.5.4) > > > > $ ./configure --enable-trace --host=sh4-linux > --prefix=/target/usr/ > --with-classpath-install-dir=/target/usr/ > > > > However, when I execute jamvm I still get > "bootclasspath empty!" message. > > > > So I tried, different bootclasspath arguments (don't > really know the correct one), and I get this: > > $ jamvm > --Xbootclasspath:/usr/share/classpath/glib.zip > > Alloced heap size 0xffff8 > > Allocated mark bits - size is 8192 > > Exception occurred while VM initialising. > > java/lang/NoClassDefFoundError: > jamvm/java/lang/VMClassLoaderData > > > > Zip support looks enabled, so I don't know what's > happening. What's jamvm looking for? > > > > jamvm -version will show the default boot paths : > > java version "1.5.0" > JamVM version 1.5.4 > Copyright (C) 2003-2010 Robert Lougher <ro...@ja...> > > ... > ... > > Build information: > > Execution Engine: inline-threaded interpreter > Compiled with: gcc 4.4.5 > > Boot Library Path: /usr/local/classpath/lib/classpath > Boot Class Path: > /usr/local/jamvm/share/jamvm/classes.zip:/usr/local/classpath/share/classpath/glibj.zip > > > There's two zip files, classes.zip contains JamVM specific > classes > (e.g. VMClassLoaderData) and glibj.zip contains the GNU > Classpath > library. > > Hope this helps, > Rob. > > > Here is strace output: > > > > strace jamvm Hola > > execve("/usr/bin/jamvm", ["jamvm", "Hola"], [/* 17 > vars */]) = 0 > > brk(0) > = 0x44e000 > > ... > > ... Lots of library opens... (libc, pthread, libz, > etc...) > > ... > > stat64("/usr/share/classpath/glibj.zip", > {st_mode=S_IFREG|0644, st_size=9831660, ...}) = 0 > > open("/usr/share/classpath/glibj.zip", O_RDONLY) = 3 > > read(3, "PK\3\4", 4) = 4 > > lseek(3, 0, SEEK_END) = > 9831660 > > old_mmap(NULL, 9831660, PROT_READ, MAP_PRIVATE, 3, 0) > = 0x2a7bc000 > > old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 > > old_mmap(NULL, 4100, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 > > munmap(0x2b11d000, 2052) = 0 > > old_mmap(NULL, 8196, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b120000 > > munmap(0x2b11e000, 4100) = 0 > > old_mmap(NULL, 16388, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b123000 > > munmap(0x2b120000, 8196) = 0 > > old_mmap(NULL, 32772, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b128000 > > munmap(0x2b123000, 16388) = 0 > > old_mmap(NULL, 65540, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b131000 > > munmap(0x2b128000, 32772) = 0 > > old_mmap(NULL, 131076, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b142000 > > munmap(0x2b131000, 65540) = 0 > > old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 > > old_mmap(NULL, 516, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 > > write(2, "Exception occurred while VM init"..., > 42Exception occurred while VM initialising. > > ) = 42 > > write(2, "java/lang/NoClassDefFoundError: "..., > 66java/lang/NoClassDefFoundError: > jamvm/java/lang/VMClassLoaderData > > ) = 66 > > exit_group(1) = > ? > > > > > > Any ideas??? > > > > > > --- El mié 8-jun-11, Ezequiel García <ele...@ya...> > escribió: > > > >> De: Ezequiel García <ele...@ya...> > >> Asunto: [Jamvm-general] Cross compiling jamvm for > sh4, almost there > >> Para: jam...@li... > >> Fecha: miércoles, 8 de junio de 2011, 16:58 > >> Hi all, > >> > >> I made some small changes to jamvm, so it can be > >> cross-compiled to run on a sh4 board. Basically, I > modified > >> configure.ac and Makefile.am so it accepts a > configure like > >> this: > >> > >> $ ./configure --host=sh4-linux > >> > >> But when I execute (on my sh4 board) it says > this... > >> > >> $ jamvm Hola > >> bootclasspath is empty! > >> > >> So, I realized I needed to cross-compile gnu > classpath > >> also. This I am doing right now. > >> > >> However, I'm a bit confused. What is gnu > classpath? I > >> tought it only provided java libraries (bytecode, > compiles > >> with ecj) but it seems I also provides native > library (.so, > >> compiles with sh4-linux-gcc) > >> > >> Could someone clarify? > >> > >> Greetings! > >> Ezequiel. > >> > >> > ------------------------------------------------------------------------------ > >> EditLive Enterprise is the world's most > technically > >> advanced content > >> authoring tool. Experience the power of Track > Changes, > >> Inline Image > >> Editing and ensure content is compliant with > Accessibility > >> Checking. > >> http://p.sf.net/sfu/ephox-dev2dev > >> _______________________________________________ > >> Jamvm-general mailing list > >> Jam...@li... > >> https://lists.sourceforge.net/lists/listinfo/jamvm-general > >> > > > > > ------------------------------------------------------------------------------ > > EditLive Enterprise is the world's most technically > advanced content > > authoring tool. Experience the power of Track Changes, > Inline Image > > Editing and ensure content is compliant with > Accessibility Checking. > > http://p.sf.net/sfu/ephox-dev2dev > > _______________________________________________ > > Jamvm-general mailing list > > Jam...@li... > > https://lists.sourceforge.net/lists/listinfo/jamvm-general > > > |
From: Ezequiel G. <ele...@ya...> - 2011-06-08 22:21:47
|
--- El mié 8-jun-11, Robert Lougher <rob...@gm...> escribió: > De: Robert Lougher <rob...@gm...> > Asunto: Re: [Jamvm-general] Cross compiling jamvm for sh4, almost there > Para: "Ezequiel García" <ele...@ya...> > Cc: jam...@li... > Fecha: miércoles, 8 de junio de 2011, 18:42 > Hi Ezequiel, > > 2011/6/8 Ezequiel García <ele...@ya...>: > > Hi all, > > > > I made some small changes to jamvm, so it can be > cross-compiled to run on a sh4 board. Basically, I modified > configure.ac and Makefile.am so it accepts a configure like > this: > > > > $ ./configure --host=sh4-linux > > > > A port to a new architecture normally requires a couple of > architecture-dependent stuff to be implemented : > > 1) A header file in src/arch (e.g. arm.h). This > contains macros for > atomic operations and memory barriers (you may be able to > use generic > gcc functions for this) > > 2) For best performance, an implementation of callJNIMethod > which > handles the calling convention (e.g. > os/linux/x86_64/callNative.S). > > If your architecture is supported by libffi, the second > part is > optional (libffi is a generic interface, but it is > slower). JamVM > must be configured with --enable-ffi for this to work. > > So... I'm curious what changes you have made to > support sh4. > I already explained (very briefly) the changes on my previous mail. Yes, I am using ffi and I basically copied arch header from parisc.h, because it had no assembler lines. I am still not very confident with sh4 asm so on a first try I was trying to avoid it through C. I did --NO-- locking on COMPARE_AND_SWAP, since I guessed my uniprocessor sh4 wouldn't need it. Maybe it could be implemented with some sh4 instructions. A question regarding this issue: is really slower to use ffi? In that case, I could try a callNative.S implementation. But I am not sure if I should do it using pure asm (like mips implementation) or mixed C/asm with most C (as in x86_64 implementation). In your experience what will be the fastest way (to run, not to code :D ) ? > Thanks, > Rob. > > > But when I execute (on my sh4 board) it says this... > > > > $ jamvm Hola > > bootclasspath is empty! > > > > So, I realized I needed to cross-compile gnu classpath > also. This I am doing right now. > > > > However, I'm a bit confused. What is gnu classpath? I > tought it only provided java libraries (bytecode, compiles > with ecj) but it seems I also provides native library (.so, > compiles with sh4-linux-gcc) > > > > Could someone clarify? > > > > Greetings! > > Ezequiel. > > > > > ------------------------------------------------------------------------------ > > EditLive Enterprise is the world's most technically > advanced content > > authoring tool. Experience the power of Track Changes, > Inline Image > > Editing and ensure content is compliant with > Accessibility Checking. > > http://p.sf.net/sfu/ephox-dev2dev > > _______________________________________________ > > Jamvm-general mailing list > > Jam...@li... > > https://lists.sourceforge.net/lists/listinfo/jamvm-general > > > |
From: Robert L. <rob...@gm...> - 2011-06-08 21:42:36
|
Hi Ezequiel, 2011/6/8 Ezequiel García <ele...@ya...>: > Hi all, > > I made some small changes to jamvm, so it can be cross-compiled to run on a sh4 board. Basically, I modified configure.ac and Makefile.am so it accepts a configure like this: > > $ ./configure --host=sh4-linux > A port to a new architecture normally requires a couple of architecture-dependent stuff to be implemented : 1) A header file in src/arch (e.g. arm.h). This contains macros for atomic operations and memory barriers (you may be able to use generic gcc functions for this) 2) For best performance, an implementation of callJNIMethod which handles the calling convention (e.g. os/linux/x86_64/callNative.S). If your architecture is supported by libffi, the second part is optional (libffi is a generic interface, but it is slower). JamVM must be configured with --enable-ffi for this to work. So... I'm curious what changes you have made to support sh4. Thanks, Rob. > But when I execute (on my sh4 board) it says this... > > $ jamvm Hola > bootclasspath is empty! > > So, I realized I needed to cross-compile gnu classpath also. This I am doing right now. > > However, I'm a bit confused. What is gnu classpath? I tought it only provided java libraries (bytecode, compiles with ecj) but it seems I also provides native library (.so, compiles with sh4-linux-gcc) > > Could someone clarify? > > Greetings! > Ezequiel. > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Robert L. <rob...@gm...> - 2011-06-08 21:02:34
|
Hi Ezequiel, 2011/6/8 Ezequiel García <ele...@ya...>: > More news on this... > > I have succesfully (?) cross-compiled gnu classpath and jamvm for sh4 architecture. The configure lines are this: > > for gnu classpath (0.98) > > $ ./configure --host=sh4-linux --build=i686-linux --target=sh4-linux --prefix=/target/usr/ --without-x --disable-gtk-peer --disable-Werror --without-gjdoc --enable-jni --disable-examples --disable-plugin --disable-gconf-peer --disable-alsa --disable-gjdoc > > for jamvm (1.5.4) > > $ ./configure --enable-trace --host=sh4-linux --prefix=/target/usr/ --with-classpath-install-dir=/target/usr/ > > However, when I execute jamvm I still get "bootclasspath empty!" message. > > So I tried, different bootclasspath arguments (don't really know the correct one), and I get this: > $ jamvm --Xbootclasspath:/usr/share/classpath/glib.zip > Alloced heap size 0xffff8 > Allocated mark bits - size is 8192 > Exception occurred while VM initialising. > java/lang/NoClassDefFoundError: jamvm/java/lang/VMClassLoaderData > > Zip support looks enabled, so I don't know what's happening. What's jamvm looking for? > jamvm -version will show the default boot paths : java version "1.5.0" JamVM version 1.5.4 Copyright (C) 2003-2010 Robert Lougher <ro...@ja...> ... ... Build information: Execution Engine: inline-threaded interpreter Compiled with: gcc 4.4.5 Boot Library Path: /usr/local/classpath/lib/classpath Boot Class Path: /usr/local/jamvm/share/jamvm/classes.zip:/usr/local/classpath/share/classpath/glibj.zip There's two zip files, classes.zip contains JamVM specific classes (e.g. VMClassLoaderData) and glibj.zip contains the GNU Classpath library. Hope this helps, Rob. > Here is strace output: > > strace jamvm Hola > execve("/usr/bin/jamvm", ["jamvm", "Hola"], [/* 17 vars */]) = 0 > brk(0) = 0x44e000 > ... > ... Lots of library opens... (libc, pthread, libz, etc...) > ... > stat64("/usr/share/classpath/glibj.zip", {st_mode=S_IFREG|0644, st_size=9831660, ...}) = 0 > open("/usr/share/classpath/glibj.zip", O_RDONLY) = 3 > read(3, "PK\3\4", 4) = 4 > lseek(3, 0, SEEK_END) = 9831660 > old_mmap(NULL, 9831660, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2a7bc000 > old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 > old_mmap(NULL, 4100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 > munmap(0x2b11d000, 2052) = 0 > old_mmap(NULL, 8196, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b120000 > munmap(0x2b11e000, 4100) = 0 > old_mmap(NULL, 16388, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b123000 > munmap(0x2b120000, 8196) = 0 > old_mmap(NULL, 32772, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b128000 > munmap(0x2b123000, 16388) = 0 > old_mmap(NULL, 65540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b131000 > munmap(0x2b128000, 32772) = 0 > old_mmap(NULL, 131076, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b142000 > munmap(0x2b131000, 65540) = 0 > old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 > old_mmap(NULL, 516, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 > write(2, "Exception occurred while VM init"..., 42Exception occurred while VM initialising. > ) = 42 > write(2, "java/lang/NoClassDefFoundError: "..., 66java/lang/NoClassDefFoundError: jamvm/java/lang/VMClassLoaderData > ) = 66 > exit_group(1) = ? > > > Any ideas??? > > > --- El mié 8-jun-11, Ezequiel García <ele...@ya...> escribió: > >> De: Ezequiel García <ele...@ya...> >> Asunto: [Jamvm-general] Cross compiling jamvm for sh4, almost there >> Para: jam...@li... >> Fecha: miércoles, 8 de junio de 2011, 16:58 >> Hi all, >> >> I made some small changes to jamvm, so it can be >> cross-compiled to run on a sh4 board. Basically, I modified >> configure.ac and Makefile.am so it accepts a configure like >> this: >> >> $ ./configure --host=sh4-linux >> >> But when I execute (on my sh4 board) it says this... >> >> $ jamvm Hola >> bootclasspath is empty! >> >> So, I realized I needed to cross-compile gnu classpath >> also. This I am doing right now. >> >> However, I'm a bit confused. What is gnu classpath? I >> tought it only provided java libraries (bytecode, compiles >> with ecj) but it seems I also provides native library (.so, >> compiles with sh4-linux-gcc) >> >> Could someone clarify? >> >> Greetings! >> Ezequiel. >> >> ------------------------------------------------------------------------------ >> EditLive Enterprise is the world's most technically >> advanced content >> authoring tool. Experience the power of Track Changes, >> Inline Image >> Editing and ensure content is compliant with Accessibility >> Checking. >> http://p.sf.net/sfu/ephox-dev2dev >> _______________________________________________ >> Jamvm-general mailing list >> Jam...@li... >> https://lists.sourceforge.net/lists/listinfo/jamvm-general >> > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Ezequiel G. <ele...@ya...> - 2011-06-08 20:50:03
|
More news on this... I have succesfully (?) cross-compiled gnu classpath and jamvm for sh4 architecture. The configure lines are this: for gnu classpath (0.98) $ ./configure --host=sh4-linux --build=i686-linux --target=sh4-linux --prefix=/target/usr/ --without-x --disable-gtk-peer --disable-Werror --without-gjdoc --enable-jni --disable-examples --disable-plugin --disable-gconf-peer --disable-alsa --disable-gjdoc for jamvm (1.5.4) $ ./configure --enable-trace --host=sh4-linux --prefix=/target/usr/ --with-classpath-install-dir=/target/usr/ However, when I execute jamvm I still get "bootclasspath empty!" message. So I tried, different bootclasspath arguments (don't really know the correct one), and I get this: $ jamvm --Xbootclasspath:/usr/share/classpath/glib.zip Alloced heap size 0xffff8 Allocated mark bits - size is 8192 Exception occurred while VM initialising. java/lang/NoClassDefFoundError: jamvm/java/lang/VMClassLoaderData Zip support looks enabled, so I don't know what's happening. What's jamvm looking for? Here is strace output: strace jamvm Hola execve("/usr/bin/jamvm", ["jamvm", "Hola"], [/* 17 vars */]) = 0 brk(0) = 0x44e000 ... ... Lots of library opens... (libc, pthread, libz, etc...) ... stat64("/usr/share/classpath/glibj.zip", {st_mode=S_IFREG|0644, st_size=9831660, ...}) = 0 open("/usr/share/classpath/glibj.zip", O_RDONLY) = 3 read(3, "PK\3\4", 4) = 4 lseek(3, 0, SEEK_END) = 9831660 old_mmap(NULL, 9831660, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2a7bc000 old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 old_mmap(NULL, 4100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 munmap(0x2b11d000, 2052) = 0 old_mmap(NULL, 8196, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b120000 munmap(0x2b11e000, 4100) = 0 old_mmap(NULL, 16388, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b123000 munmap(0x2b120000, 8196) = 0 old_mmap(NULL, 32772, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b128000 munmap(0x2b123000, 16388) = 0 old_mmap(NULL, 65540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b131000 munmap(0x2b128000, 32772) = 0 old_mmap(NULL, 131076, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b142000 munmap(0x2b131000, 65540) = 0 old_mmap(NULL, 2052, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11d000 old_mmap(NULL, 516, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b11e000 write(2, "Exception occurred while VM init"..., 42Exception occurred while VM initialising. ) = 42 write(2, "java/lang/NoClassDefFoundError: "..., 66java/lang/NoClassDefFoundError: jamvm/java/lang/VMClassLoaderData ) = 66 exit_group(1) = ? Any ideas??? --- El mié 8-jun-11, Ezequiel García <ele...@ya...> escribió: > De: Ezequiel García <ele...@ya...> > Asunto: [Jamvm-general] Cross compiling jamvm for sh4, almost there > Para: jam...@li... > Fecha: miércoles, 8 de junio de 2011, 16:58 > Hi all, > > I made some small changes to jamvm, so it can be > cross-compiled to run on a sh4 board. Basically, I modified > configure.ac and Makefile.am so it accepts a configure like > this: > > $ ./configure --host=sh4-linux > > But when I execute (on my sh4 board) it says this... > > $ jamvm Hola > bootclasspath is empty! > > So, I realized I needed to cross-compile gnu classpath > also. This I am doing right now. > > However, I'm a bit confused. What is gnu classpath? I > tought it only provided java libraries (bytecode, compiles > with ecj) but it seems I also provides native library (.so, > compiles with sh4-linux-gcc) > > Could someone clarify? > > Greetings! > Ezequiel. > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically > advanced content > authoring tool. Experience the power of Track Changes, > Inline Image > Editing and ensure content is compliant with Accessibility > Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Ezequiel G. <ele...@ya...> - 2011-06-08 19:58:14
|
Hi all, I made some small changes to jamvm, so it can be cross-compiled to run on a sh4 board. Basically, I modified configure.ac and Makefile.am so it accepts a configure like this: $ ./configure --host=sh4-linux But when I execute (on my sh4 board) it says this... $ jamvm Hola bootclasspath is empty! So, I realized I needed to cross-compile gnu classpath also. This I am doing right now. However, I'm a bit confused. What is gnu classpath? I tought it only provided java libraries (bytecode, compiles with ecj) but it seems I also provides native library (.so, compiles with sh4-linux-gcc) Could someone clarify? Greetings! Ezequiel. |
From: Christopher F. <chr...@gm...> - 2011-05-18 17:49:56
|
Hi folks, Sorry if you're receiving this on #gentoo-embedded or another mailing list as well, but I just wanted to announce a small project that might be of interest for some people on this list. I'm introducing Android's Bionic C library into Gentoo's Portage as new ELIBC and put together a proof of concept overlay that contains the libc, icu4c, libxml2, libxslt, zlib, gnu-classpath and jamvm ebuilds. It's alpha right now, but runs on amd64 / x86 hardware. I haven't built it yet for arm, but that arch will be my next victim. If anyone is interested, it would be great if someone could try building it from scratch and let me know if there are any speed-bumps. ================================================== I've made tarball snapshots of the portage overlay (i.e. all source), sysroot, and toolchain available here[1]. A gitorious project has been set up here[2], but I'm not going to check-in the overlay until a bit more testing is done. I've also set up a blog to make announcements here[3], and will be making the first post after checking the overlay into gitorious and after one or two people can reproduce the build. Incidentally, if anyone here has an amd64 or x86 arch running Linux and would like to do take it for a test drive, download the sysroot from [1], unpack to /usr/i686-pc-linux-bionic and then run the following: =================================== #!/bin/sh for i in proc sys dev tmp; do mount -o bind /${i} /usr/i686-pc-linux-bionic/${i} done chroot /usr/i686-pc-linux-bionic /bin/sh =================================== Incidentally, if you try to recreate the toolchain, please use the following: ===================================================== #!/bin/sh export PORTDIR_OVERLAY="/usr/local/portage/crossdev-overlay" export PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/gentoo-bionic-overlay" emerge =sys-devel/crossdev-20110310 =sys-devel/gnuconfig-20100924 crossdev \ -S \ --g 4.6.0 \ --target i686-pc-linux-bionic ===================================================== Cheers, C [1] http://code.google.com/p/gentoo-bionic [2] https://gitorious.org/gentoo-bionic [3] http://gentoo-bionic.blogspot.com |
From: Robert L. <rob...@gm...> - 2011-03-26 00:36:48
|
Hi Xerxes, On 24 March 2011 21:55, Xerxes Ranby <xe...@za...> wrote: > On 2011-03-24 17:22, Xerxes Rånby wrote: >> >> Hi the IcedTea buildbot found a multiplication overflow bug in the new >> default min max heap size on physical memory calculation code when running >> JamVM on a system with a lot of RAM. >> >> >> http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=cc6997003dd65ba5a32df471b7c0547fba9769f2 >> >> http://builder.classpath.org/icedtea/buildbot/builders/icedtea6-jaunty-ia32-quick-jamvm/builds/35 >> >> JamVM fails to launch on the icedtea buildbot with 3.6G of RAM > > Attached patch fix. > > The multiplication of num_pages*pages_size caused a long sign flip overflow. > Then later when the sign flipped long got divided by 4 and converted back to > unsigned form caused the calculated min-heap argument to end up in the 4Gb > range. > >From the openjdk mailing list I see you've seen the push of the fix. I didn't use your patch because I was already working on a fix. After making the embarrassing mistake of not taking into account long overflow, I did some research and discovered that with PAE, a 32-bit machine can have more than 4GB of physical memory (though each process can't see more than 4GB). Therefore, an unsigned long can still overflow, and we need to use long long. As min_heap and max_heap are both unsigned long, I also added some extra precautions to ensure that the conversion from long long will not overflow (check both limits against DEFAULT_MAX_HEAP, which on 32-bit machines must be less than 4GB), even though in practice this can't occur (phys_mem/64 will only overflow when physical memory is >= 256GB, and PAE is "limited" to 64GB, but this protects against potential changes to the min_heap ratio). Rob. > Cheers and have a great day! > Xerxes > > > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > > |
From: Xerxes R. <xe...@za...> - 2011-03-24 21:56:11
|
On 2011-03-24 17:22, Xerxes Rånby wrote: > Hi the IcedTea buildbot found a multiplication overflow bug in the new > default min max heap size on physical memory calculation code when running JamVM on a system with a lot of RAM. > > http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=cc6997003dd65ba5a32df471b7c0547fba9769f2 > http://builder.classpath.org/icedtea/buildbot/builders/icedtea6-jaunty-ia32-quick-jamvm/builds/35 > > JamVM fails to launch on the icedtea buildbot with 3.6G of RAM Attached patch fix. The multiplication of num_pages*pages_size caused a long sign flip overflow. Then later when the sign flipped long got divided by 4 and converted back to unsigned form caused the calculated min-heap argument to end up in the 4Gb range. Cheers and have a great day! Xerxes |
From: Xerxes R. <xe...@za...> - 2011-03-24 16:22:37
|
Hi the IcedTea buildbot found a multiplication overflow bug in the new default min max heap size on physical memory calculation code when running JamVM on a system with a lot of RAM. http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=cc6997003dd65ba5a32df471b7c0547fba9769f2 http://builder.classpath.org/icedtea/buildbot/builders/icedtea6-jaunty-ia32-quick-jamvm/builds/35 Testcase: $ cat test.c #include <stdio.h> #include <unistd.h> long getPhysicalMemory() { long num_pages = sysconf(_SC_PHYS_PAGES); printf("num_pages=%ld\n",num_pages); long page_size = sysconf(_SC_PAGESIZE); printf("page_size=%ld\n",page_size); return num_pages * page_size; } int main(void) { printf("getPhysicalMemory=%ld\n",getPhysicalMemory()); return 0; } Output: JamVM fails to launch on the icedtea buildbot with 3.6G of RAM $gcc test.c $ ./a.out num_pages=901305 page_size=4096 getPhysicalMemory=-603222016 $ free total used free shared buffers cached Mem: 3605220 3335356 269864 0 178496 2461148 -/+ buffers/cache: 695712 2909508 Swap: 6072528 163624 5908904 $ /home/buildbot/icedtea/icedtea6-jaunty-ia32-quick-jamvm/build/openjdk.build/j2sdk-image/bin/java -version Couldn't allocate the heap; try reducing the max heap size (-Xmx) : Cannot allocate memory $ /home/buildbot/icedtea/icedtea6-jaunty-ia32-quick-jamvm/build/openjdk.build/j2sdk-image/bin/java -Xmx2700m -version java version "1.6.0_22" IcedTea6 Runtime Environment (1.11pre+rf2b14c2da1ee) (Ubuntu build 1.6.0_22-b22) JamVM (build 1.6.0-devel, inline-threaded interpreter with stack-caching) JamVM work on my test machine with 2Gb of RAM $gcc test.c $ ./a.out num_pages=494269 page_size=4096 getPhysicalMemory=2024525824 $ free total used free shared buffers cached Mem: 1977076 1919960 57116 0 35340 932724 -/+ buffers/cache: 951896 1025180 Swap: 3478036 106324 3371712 $ ./icedtea6-1.10-jamvm/openjdk.build/j2sdk-image/bin/java -version java version "1.6.0_22" IcedTea6 Runtime Environment (1.10.1pre+r18a72e54ee0e+) (Ubuntu build 1.6.0_22-b22) JamVM (build 1.6.0-devel, inline-threaded interpreter with stack-caching) > changeset 1e6b2d4fbb71 in /hg/release/icedtea6-1.10 > details: http://icedtea.classpath.org/hg/release/icedtea6-1.10?cmd=changeset;node=1e6b2d4fbb71 > author: Xerxes R?nby <xe...@za...> > date: Thu Mar 24 13:06:27 2011 +0100 > > JamVM: Base default min and max heap size on physical memory. > > 2011-03-24 Xerxes Ranby <xe...@za...> > > JamVM: Base default min and max heap size on physical > memory. > * NEWS: Updated. > * Makefile.am (JAMVM_VERSION): Updated to latest JamVM > revision. (JAMVM_SHA256SUM): Updated. > |
From: Dimitris T. <dts...@ho...> - 2011-03-23 09:05:55
|
Hi all, I have set-up Openwrt + jamvm on the Infineon Danube processor, which is mips-based. I am trying to run jamvm from a USB stick, since the classpath is toobig to fit in my board's flash. Therefore, I have cross-compiled jamvm + classpath and stored them in the USB stick, along with the relating libraries. ThoughI am able to run a simple HelloWorld example when I use a Hello.class file, I can not run the example when I use a Hello.jar file, as I get the following error: java.util.zip.ZipException: Not a valid zip file at java.util.zip.ZipFile.checkZipFile(ZipFile.java:209) a t java.util.zip.ZipFile.<init>(ZipFile.java:139) at java.util.jar.JarFile.<init>(JarFile.java:199) at java.util.jar.JarFile.<init>(JarFile.java:181) at jamvm.java.lang.JarLauncher.main(JarLauncher.java:33) I invoke jamvm using the command-line: /mnt/Openwrt/bin/jamvm -Xbootclasspath:/mnt/Openwrt/jamvmClasspath/classes.zip:/mnt/Openwrt/classpath/glibj.zip -Djava.library.path=/mnt/Openwrt/libs/classpath -jar /mnt/Openwrt/Jars/Hello.jar I also get the same behavior when I mount my filesystem over NFS. Any hints why I get this behavior? Greetings,Dimitris |
From: Robert L. <rob...@gm...> - 2011-03-21 11:51:57
|
Hi Xerxes, On 21 March 2011 11:45, Xerxes Rånby <xe...@za...> wrote: > The git commit > http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=5c1ee07b78ecf18b24493b1759e20a7e22570c19 > fixed this issue on all of my testmachines! > > JamVM do now pass all IcedRobot unittests. > That's great. Thanks, Rob. > Thank you Robert for the fix! > > Cheers and have a great day! > Xerxes > P.S. My regression test for reflective array access crashes Cacao. I'll send them a bug report (they don't handle the case where the object is not an array). > On 2011-03-17 22:54, Xerxes Rånby wrote: >> Hi I found a reproducer that easily triggers a crash when using JamVM in >> combination with OpenJDK to to build and test the icedrobot >> http://www.icedrobot.org/ project. >> You need maven2 installed for the following testcase to work. >> >> scroll down for gdb backtrace >> >> Testcase: >> hg clone http://icedtea.classpath.org/icedrobot/hg/daneel/ >> cd daneel >> mvn package >> >> >> Output: when using JamVM >> ------------------------------------------------------- >> T E S T S >> ------------------------------------------------------- >> Running org.icedrobot.daneel.dex.EncodedValueTest >> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec >> Running org.icedrobot.daneel.ClassTransformerTest >> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec >> Running org.icedrobot.daneel.util.BufferUtilTest >> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec >> Running org.icedrobot.daneel.dex.HeaderTest >> Segmentation fault >> >> >> Expected output: here tested using Hotspot >> CACAO also pass this one. >> ------------------------------------------------------- >> T E S T S >> ------------------------------------------------------- >> Running org.icedrobot.daneel.dex.EncodedValueTest >> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.037 sec >> Running org.icedrobot.daneel.ClassTransformerTest >> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 sec >> Running org.icedrobot.daneel.util.BufferUtilTest >> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec >> Running org.icedrobot.daneel.dex.HeaderTest >> Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec >> >> Results : >> >> Tests run: 30, Failures: 0, Errors: 0, Skipped: 0 >> >> rkennke informed me that I can find out the commandline used by maven by >> running: >> mvn test -X >> >> in my case the command line to execute the reproducer was: >> java -jamvm -jar /tmp/surefirebooter4476304406898252539.jar >> /tmp/surefire8373428958488103705tmp /tmp/surefire2055142817449997379tmp >> >> Program received signal SIGSEGV, Segmentation fault. >> [Switching to Thread 0x7ffff6b0d710 (LWP 20739)] >> 0x00007ffff6fda920 in executeJava () at interp.c:2182 >> 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { >> (gdb) bt >> #0 0x00007ffff6fda920 in executeJava () at interp.c:2182 >> #1 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value >> optimized out>, arg_array=0x7fffeea51c60, param_types=0x7fffee6a2948) at >> reflect.c:581 >> #2 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffeea51920, mb=0xbc1c20, >> args_array=0x7fffeea51c60, ret_type=0x7fffee3ec1f0, >> param_types=0x7fffee6a2948, >> no_access_check=<value optimized out>, depth=0) at reflect.c:694 >> #3 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, >> ob=0xabaf10, args_array=0x0) at reflect.c:272 >> #4 0x00007ffff6fe1df9 in done () at callNative.S:201 >> #5 0x00007ffff721c8c0 in main_thread () from >> /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so >> #6 0x00007ffff7f0fac8 in ?? () >> #7 0x00007ffff7f0fb10 in ?? () >> #8 0x00007fffee448578 in ?? () >> #9 0x00007fffea1f8d80 in >> Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () >> from >> /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so >> #10 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0fb28, >> mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 >> #11 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 >> #12 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value >> optimized out>, arg_array=0x7fffee49d238, param_types=0x7fffee49c958) at >> reflect.c:581 >> #13 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffee452698, mb=0xa3a880, >> args_array=0x7fffee49d238, ret_type=0x7fffee332eb8, >> param_types=0x7fffee49c958, >> no_access_check=<value optimized out>, depth=0) at reflect.c:694 >> #14 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, >> ob=0xabaf10, args_array=0x0) at reflect.c:272 >> #15 0x00007ffff6fe1df9 in done () at callNative.S:201 >> #16 0x00007ffff721c8c0 in main_thread () from >> /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so >> #17 0x00007ffff7f0f398 in ?? () >> #18 0x00007ffff7f0f3e0 in ?? () >> #19 0x00007fffee448578 in ?? () >> #20 0x00007fffea1f8d80 in >> Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () >> from >> /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so >> #21 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0f3f8, >> mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 >> #22 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 >> #23 0x00007ffff6fcb9fb in executeMethodVaList (ob=0x0, >> class=0x7fffee3eaa90, mb=0x9e3b30, jargs=0x7ffff6b0cd40) at execute.c:129 >> #24 0x00007ffff6fcd0f9 in Jam_CallStaticVoidMethod (env=<value optimized >> out>, clazz=<value optimized out>, methodID=0x0) at jni.c:1216 >> #25 0x00000000004037c5 in JavaMain () >> #26 0x00007ffff79af9ca in start_thread () from /lib/libpthread.so.0 >> #27 0x00007ffff730370d in clone () from /lib/libc.so.6 >> #28 0x0000000000000000 in ?? () >> (gdb) list >> 2177 if(handler != NULL) >> 2178 goto *handler; >> 2179 });) >> 2180 #endif >> 2181 >> 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { >> 2183 Class *new_class; >> 2184 >> 2185 arg1 = ostack - INV_QUICK_ARGS(pc); >> 2186 NULL_POINTER_CHECK(*arg1); >> (gdb) >> >> Cheers >> Xerxes >> >> ------------------------------------------------------------------------------ >> Colocation vs. Managed Hosting >> A question and answer guide to determining the best fit >> for your organization - today and in the future. >> http://p.sf.net/sfu/internap-sfd2d >> _______________________________________________ >> Jamvm-general mailing list >> Jam...@li... >> https://lists.sourceforge.net/lists/listinfo/jamvm-general > > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Xerxes R. <xe...@za...> - 2011-03-21 11:45:50
|
The git commit http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=5c1ee07b78ecf18b24493b1759e20a7e22570c19 fixed this issue on all of my testmachines! JamVM do now pass all IcedRobot unittests. Thank you Robert for the fix! Cheers and have a great day! Xerxes On 2011-03-17 22:54, Xerxes Rånby wrote: > Hi I found a reproducer that easily triggers a crash when using JamVM in > combination with OpenJDK to to build and test the icedrobot > http://www.icedrobot.org/ project. > You need maven2 installed for the following testcase to work. > > scroll down for gdb backtrace > > Testcase: > hg clone http://icedtea.classpath.org/icedrobot/hg/daneel/ > cd daneel > mvn package > > > Output: when using JamVM > ------------------------------------------------------- > T E S T S > ------------------------------------------------------- > Running org.icedrobot.daneel.dex.EncodedValueTest > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec > Running org.icedrobot.daneel.ClassTransformerTest > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec > Running org.icedrobot.daneel.util.BufferUtilTest > Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec > Running org.icedrobot.daneel.dex.HeaderTest > Segmentation fault > > > Expected output: here tested using Hotspot > CACAO also pass this one. > ------------------------------------------------------- > T E S T S > ------------------------------------------------------- > Running org.icedrobot.daneel.dex.EncodedValueTest > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.037 sec > Running org.icedrobot.daneel.ClassTransformerTest > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 sec > Running org.icedrobot.daneel.util.BufferUtilTest > Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec > Running org.icedrobot.daneel.dex.HeaderTest > Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec > > Results : > > Tests run: 30, Failures: 0, Errors: 0, Skipped: 0 > > rkennke informed me that I can find out the commandline used by maven by > running: > mvn test -X > > in my case the command line to execute the reproducer was: > java -jamvm -jar /tmp/surefirebooter4476304406898252539.jar > /tmp/surefire8373428958488103705tmp /tmp/surefire2055142817449997379tmp > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0x7ffff6b0d710 (LWP 20739)] > 0x00007ffff6fda920 in executeJava () at interp.c:2182 > 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { > (gdb) bt > #0 0x00007ffff6fda920 in executeJava () at interp.c:2182 > #1 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value > optimized out>, arg_array=0x7fffeea51c60, param_types=0x7fffee6a2948) at > reflect.c:581 > #2 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffeea51920, mb=0xbc1c20, > args_array=0x7fffeea51c60, ret_type=0x7fffee3ec1f0, > param_types=0x7fffee6a2948, > no_access_check=<value optimized out>, depth=0) at reflect.c:694 > #3 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, > ob=0xabaf10, args_array=0x0) at reflect.c:272 > #4 0x00007ffff6fe1df9 in done () at callNative.S:201 > #5 0x00007ffff721c8c0 in main_thread () from > /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so > #6 0x00007ffff7f0fac8 in ?? () > #7 0x00007ffff7f0fb10 in ?? () > #8 0x00007fffee448578 in ?? () > #9 0x00007fffea1f8d80 in > Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () > from > /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so > #10 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0fb28, > mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 > #11 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 > #12 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value > optimized out>, arg_array=0x7fffee49d238, param_types=0x7fffee49c958) at > reflect.c:581 > #13 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffee452698, mb=0xa3a880, > args_array=0x7fffee49d238, ret_type=0x7fffee332eb8, > param_types=0x7fffee49c958, > no_access_check=<value optimized out>, depth=0) at reflect.c:694 > #14 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, > ob=0xabaf10, args_array=0x0) at reflect.c:272 > #15 0x00007ffff6fe1df9 in done () at callNative.S:201 > #16 0x00007ffff721c8c0 in main_thread () from > /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so > #17 0x00007ffff7f0f398 in ?? () > #18 0x00007ffff7f0f3e0 in ?? () > #19 0x00007fffee448578 in ?? () > #20 0x00007fffea1f8d80 in > Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () > from > /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so > #21 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0f3f8, > mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 > #22 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 > #23 0x00007ffff6fcb9fb in executeMethodVaList (ob=0x0, > class=0x7fffee3eaa90, mb=0x9e3b30, jargs=0x7ffff6b0cd40) at execute.c:129 > #24 0x00007ffff6fcd0f9 in Jam_CallStaticVoidMethod (env=<value optimized > out>, clazz=<value optimized out>, methodID=0x0) at jni.c:1216 > #25 0x00000000004037c5 in JavaMain () > #26 0x00007ffff79af9ca in start_thread () from /lib/libpthread.so.0 > #27 0x00007ffff730370d in clone () from /lib/libc.so.6 > #28 0x0000000000000000 in ?? () > (gdb) list > 2177 if(handler != NULL) > 2178 goto *handler; > 2179 });) > 2180 #endif > 2181 > 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { > 2183 Class *new_class; > 2184 > 2185 arg1 = ostack - INV_QUICK_ARGS(pc); > 2186 NULL_POINTER_CHECK(*arg1); > (gdb) > > Cheers > Xerxes > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general |
From: Wolfgang P. <wol...@ii...> - 2011-03-18 09:28:38
|
Hello, Am 17.03.2011 18:39, schrieb Robert Lougher: > Hi, > > On 17 March 2011 15:45, Wolfgang Paulus > <wol...@ii...> wrote: >> Hello, >> >> I have a question regarding the pthread stack size in jamvm. >> Why is the pthread stack size at least 1MB? >> This is set in the pthread attributes in "initialiseThreadStage1" (thread.c) >> >> I work on a resource limited system and would like to know if I really need >> to allocate a whole MByte just for an listener thread. >> > > Further to my previous message, I forgot to say that you can now > completely remove the code from thread.c. But as it's only setting > the stack size limit, it shouldn't affect how much memory is actually > allocated to the thread. > > Rob. > >> Best regards, >> Wolfgang Paulus >> thank you for your fast answer. It is good to know that I can remove this code. The system I'm working on is running on eCos and the pthread implementation there actually allocates the whole stack at thread creation. So our system spends a whole MB for the creation of, in my case, a simple listener thread. :-) Wolfgang |
From: Xerxes R. <xe...@za...> - 2011-03-17 21:54:58
|
Hi I found a reproducer that easily triggers a crash when using JamVM in combination with OpenJDK to to build and test the icedrobot http://www.icedrobot.org/ project. You need maven2 installed for the following testcase to work. scroll down for gdb backtrace Testcase: hg clone http://icedtea.classpath.org/icedrobot/hg/daneel/ cd daneel mvn package Output: when using JamVM ------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.icedrobot.daneel.dex.EncodedValueTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec Running org.icedrobot.daneel.ClassTransformerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec Running org.icedrobot.daneel.util.BufferUtilTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec Running org.icedrobot.daneel.dex.HeaderTest Segmentation fault Expected output: here tested using Hotspot CACAO also pass this one. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running org.icedrobot.daneel.dex.EncodedValueTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.037 sec Running org.icedrobot.daneel.ClassTransformerTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 sec Running org.icedrobot.daneel.util.BufferUtilTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec Running org.icedrobot.daneel.dex.HeaderTest Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec Results : Tests run: 30, Failures: 0, Errors: 0, Skipped: 0 rkennke informed me that I can find out the commandline used by maven by running: mvn test -X in my case the command line to execute the reproducer was: java -jamvm -jar /tmp/surefirebooter4476304406898252539.jar /tmp/surefire8373428958488103705tmp /tmp/surefire2055142817449997379tmp Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff6b0d710 (LWP 20739)] 0x00007ffff6fda920 in executeJava () at interp.c:2182 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { (gdb) bt #0 0x00007ffff6fda920 in executeJava () at interp.c:2182 #1 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value optimized out>, arg_array=0x7fffeea51c60, param_types=0x7fffee6a2948) at reflect.c:581 #2 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffeea51920, mb=0xbc1c20, args_array=0x7fffeea51c60, ret_type=0x7fffee3ec1f0, param_types=0x7fffee6a2948, no_access_check=<value optimized out>, depth=0) at reflect.c:694 #3 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, ob=0xabaf10, args_array=0x0) at reflect.c:272 #4 0x00007ffff6fe1df9 in done () at callNative.S:201 #5 0x00007ffff721c8c0 in main_thread () from /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so #6 0x00007ffff7f0fac8 in ?? () #7 0x00007ffff7f0fb10 in ?? () #8 0x00007fffee448578 in ?? () #9 0x00007fffea1f8d80 in Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () from /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so #10 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0fb28, mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 #11 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 #12 0x00007ffff6fd23b7 in invoke (ob=<value optimized out>, mb=<value optimized out>, arg_array=0x7fffee49d238, param_types=0x7fffee49c958) at reflect.c:581 #13 0x00007ffff6fd2559 in methodInvoke (ob=0x7fffee452698, mb=0xa3a880, args_array=0x7fffee49d238, ret_type=0x7fffee332eb8, param_types=0x7fffee49c958, no_access_check=<value optimized out>, depth=0) at reflect.c:694 #14 0x00007ffff6fe23e3 in invokeMethod (reflect_ob=0x706050403020100, ob=0xabaf10, args_array=0x0) at reflect.c:272 #15 0x00007ffff6fe1df9 in done () at callNative.S:201 #16 0x00007ffff721c8c0 in main_thread () from /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/jamvm/libjvm.so #17 0x00007ffff7f0f398 in ?? () #18 0x00007ffff7f0f3e0 in ?? () #19 0x00007fffee448578 in ?? () #20 0x00007fffea1f8d80 in Java_sun_reflect_NativeConstructorAccessorImpl_newInstance0 () from /home/xranby/icedtea6-cacao/openjdk.build/j2sdk-image/jre/lib/amd64/libjava.so #21 0x00007ffff6fc9f3f in callJNIWrapper (class=0x7ffff7f0f3f8, mb=0xa35070, ostack=0x7ffff6fe1d8c) at dll.c:465 #22 0x00007ffff6fdaa2d in executeJava () at interp.c:2231 #23 0x00007ffff6fcb9fb in executeMethodVaList (ob=0x0, class=0x7fffee3eaa90, mb=0x9e3b30, jargs=0x7ffff6b0cd40) at execute.c:129 #24 0x00007ffff6fcd0f9 in Jam_CallStaticVoidMethod (env=<value optimized out>, clazz=<value optimized out>, methodID=0x0) at jni.c:1216 #25 0x00000000004037c5 in JavaMain () #26 0x00007ffff79af9ca in start_thread () from /lib/libpthread.so.0 #27 0x00007ffff730370d in clone () from /lib/libc.so.6 #28 0x0000000000000000 in ?? () (gdb) list 2177 if(handler != NULL) 2178 goto *handler; 2179 });) 2180 #endif 2181 2182 DEF_OPC_210(OPC_INVOKEVIRTUAL_QUICK, { 2183 Class *new_class; 2184 2185 arg1 = ostack - INV_QUICK_ARGS(pc); 2186 NULL_POINTER_CHECK(*arg1); (gdb) Cheers Xerxes |
From: Robert L. <rob...@gm...> - 2011-03-17 17:39:41
|
Hi, On 17 March 2011 15:45, Wolfgang Paulus <wol...@ii...> wrote: > Hello, > > I have a question regarding the pthread stack size in jamvm. > Why is the pthread stack size at least 1MB? > This is set in the pthread attributes in "initialiseThreadStage1" (thread.c) > > I work on a resource limited system and would like to know if I really need > to allocate a whole MByte just for an listener thread. > Further to my previous message, I forgot to say that you can now completely remove the code from thread.c. But as it's only setting the stack size limit, it shouldn't affect how much memory is actually allocated to the thread. Rob. > Best regards, > Wolfgang Paulus > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Robert L. <rob...@gm...> - 2011-03-17 17:26:10
|
Hi, On 17 March 2011 15:45, Wolfgang Paulus <wol...@ii...> wrote: > Hello, > > I have a question regarding the pthread stack size in jamvm. > Why is the pthread stack size at least 1MB? > This is set in the pthread attributes in "initialiseThreadStage1" (thread.c) > It's there for historical reasons. The garbage collector used to use a recursive mark algorithm. On some extreme deeply nested structures the stack could overflow (it used to occur with heavy AWT applications). The GC now uses a fixed size explicit mark stack (with heap scanning in overflow situations). I reduced stack size at that time from 2MB to 1MB (this was a compromise, I didn't reduce it any further in case there was some application which would break). By default, with NPTL on Linux, a new thread gets 2MB. This can be changed by changing the resource limit before running the program (ulimit -s). But the setting in thread.c overrides that. > I work on a resource limited system and would like to know if I really need > to allocate a whole MByte just for an listener thread. > Of course, it should be noted that this is the stack size _limit_. Memory isn't actually allocated until it is used by the thread (a page fault causing the stack to be expanded). So setting a large stack size limit normally doesn't use any more memory. Rob. > Best regards, > Wolfgang Paulus > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Wolfgang P. <wol...@ii...> - 2011-03-17 15:46:03
|
Hello, I have a question regarding the pthread stack size in jamvm. Why is the pthread stack size at least 1MB? This is set in the pthread attributes in "initialiseThreadStage1" (thread.c) I work on a resource limited system and would like to know if I really need to allocate a whole MByte just for an listener thread. Best regards, Wolfgang Paulus |
From: Xerxes R. <xe...@za...> - 2011-03-17 12:39:37
|
I have updated JamVM in IcedTea6 HEAD to the latest revision from 17 Mars 2011. http://icedtea.classpath.org/hg/icedtea6/rev/bbb68fba28bf Ok to backport to IcedTea6-1.10 release branch? Cheers Xerxes |
From: Robert L. <rob...@gm...> - 2011-03-17 02:08:16
|
Hi, On 15 March 2011 11:00, Gert Brettlecker <ger...@er...> wrote: > Since there is this strong relationship to network and serial I/O we > suspect there is an issue with interrupting system calls by the GC > because of the "suspend handling". > Interruptible system calls return EINTR when they have been interrupted. This should be properly handled by restarting the call. Unfortunately, in many cases EINTR is not handled which can lead to problems. This is a bug, but auditing GNU Classpath for all occurrences is non-trivial. I have two immediate suggestions: 1) Over the last year I have reworked much of the signal handling/threading code, etc. to support multiple class libraries (GNU Classpath and OpenJDK). During this rework I noticed to my considerable surprise that I do not set SA_RESTART. This enables BSD signal semantics, which automatically restarts interrupted calls (i.e. they do not return EINTR, and so it doesn't matter if EINTR isn't handled). I have no idea if this will improve the situation but it is easy to enable it in JamVM 1.5.4. In src/thread.c initialiseSignals() change line 1100 from: act.sa_flags = 0; to: act.sa_flags = SA_RESTART; 2) Try the latest code from git: http://developer.berlios.de/git/?group_id=6545 This contains the restructured code supporting GNU Classpath and OpenJDK. It will be released as JamVM 1.6.0 once I have completed testing of GNU Classpath support for regressions (the OpenJDK support has already been integrated into IcedTea). During the restructuring I fixed several minor race-conditions and bugs (including the change to set SA_RESTART). But although GNU Classpath support works, it has received little testing (I have been concentrating on debugging OpenJDK). The code is much changed, so I have to assume some regressions have been introduced. Rob. > Cheers > Gert > > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Jamvm-general mailing list > Jam...@li... > https://lists.sourceforge.net/lists/listinfo/jamvm-general > |
From: Robert L. <rob...@gm...> - 2011-03-16 21:48:37
|
Hi, On 14 March 2011 13:58, Xerxes Ranby <xe...@za...> wrote: > Hi > > I found a easily reproducable classloader bug when using the > appletviewer from OpenJDK in combination with JamVM. > Fixed by: http://git.berlios.de/cgi-bin/cgit.cgi/jamvm/commit/?id=78f044e3052e804d4dcc37014dc52e78266d5875 (the bug is caused by a non-standard flag passed to JVM_Open) > The same applet loads fine using other jvm's > xranby@ac100 $ appletviewer -J-cacao http://oneslime.net > One Slime: http://oneslime.net/ > http://oneslime.net/one/ > LOG: [0x454ce470] JVM_StopThread: Deprecated. Not implemented. > xranby@ac100 /media/Hans/test$ appletviewer -J-server http://oneslime.net > One Slime: http://oneslime.net/ > http://oneslime.net/one/ > Cacao works because it uses the HPI library for IO. JamVM implements it directly, as the HPI has been removed in OpenJDK 7. Rob. > Some applets do load and work using JamVM like this one: > appletviewer -J-jamvm http://rsb.info.nih.gov/plasma > > Cheers > Xerxes > |
From: Gert B. <ger...@er...> - 2011-03-15 11:20:54
|
Hi We have performed long term tests of JamVM 1.5.4 with Classpath 0.98 on a network of 10 nodes. The Java application is doing primarily network (IP) communication and serial-IO with rxtx 2.1-7r2 from different threads synchronously. In this setup, we are facing Segmentation Faults and Bus Errors coming out of the GC (alloc.c) and the interpreter (interp.c). Typically, two of ten nodes are suffering from the faults within 12 hours while others are running still fine. Our primary testing platform is an ARMv5 environment with EABI and Linux Kernel 2.6.30 compiled with gcc 4.3.2. But we have also seen similar Segmentation faults when running the application on an i686 64Bit Linux PC. We are investigating the problem already for a while and have done variations of the tests, which have shown different results: * When either networking traffic or serial IO is deactivated there are no faults. * When evaluating the application with another VM (J2SE embedded) on the same platform (ARM board) there are no faults. * When comiling Jamvm with no optimization -o0 the faults are much less frequent, about one on ten nodes in 72 hours. * Turning inlining on/off (compiled with disable-inlining) has shown no effect. The fault happens with direct-threaded and direct-inlining variants. * Having a fixed big stack size of 16MB from the beginning of the programm (Xms Xmx settings) also improves the stability to around one of ten nodes in 48 hours. Since there is this strong relationship to network and serial I/O we suspect there is an issue with interrupting system calls by the GC because of the "suspend handling". Cheers Gert |
From: Robert L. <rob...@gm...> - 2011-03-15 02:30:15
|
Hi Xerxes, On 14 March 2011 13:58, Xerxes Ranby <xe...@za...> wrote: > Hi > > I found a easily reproducable classloader bug when using the > appletviewer from OpenJDK in combination with JamVM. > I can reproduce it; I'm currently tracing to find the source of the error (so far I've traced it to a PrivilegedActionException). Rob. |