vmkit2 core dump after building mmtk

Hello,

I am trying to build vmkit2 from the repo using OpenJDK 6 (stock
install) on Ubuntu 13.04 amd64. When I try to compile vmkit2 I get
the core dump below. I am not sure what the issue is, but I was
getting the same error when I was also using classpath. My build
environment is set up in the following way:

LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server/:/usr/lib/jvm/java-6-openjdk-amd64/jre/:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/

llvm src=/path/to/code/llvm-3.3.src/
llvm configured with=./configure --enable-optimized
--enable-assertions --enable-jit --enable-cxx11 --enable-threads
--enable-pthreads --enable-pic --enable-targets=host,cpp --enable-zlib
--disable-docs --disable-doxygen

vmkit2 path=/path/to/code/vmkit2

vmkit2 configured with: ./configure
--with-llvm-config-path=/path/to/code/llvm-3.3.src/Release+Asserts/bin/llvm-config
--with-classpath-impl=openjdk --enable-assert=yes --disable-optimized
--enable-debug=yes
--with-openjdk-path=/usr/lib/jvm/java-6-openjdk-amd64/

$ make
[vmkit .]: Entering compilation process
Buildfile: /path/to/code/vmkit2/mmtk/java/build.xml

main:
    [javac] Compiling 1 source file to /path/to/code/vmkit2/mmtk/java/classes
      [jar] Building jar: /path/to/code/vmkit2/mmtk/java/mmtk-vmkit.jar

BUILD SUCCESSFUL
Total time: 0 seconds
[vmkit ./mmtk/java]: Compiling 'mmtk-vmkit.jar'
vmjc: JavaClass.cpp:496: j3::JavaObject *j3::Class::doNew(j3::Jnjvm
*): Assertion `(this->isInitializing() ||
classLoader->getCompiler()->isStaticCompiling() || this ==
classLoader->bootstrapLoader->upcalls->newClass) && "Uninitialized
class when allocating."' failed.
0 vmjc 0x0000000000fa5415 llvm::sys::PrintStackTrace(_IO_FILE*) + 37
1 vmjc 0x0000000000fa5903
2 libpthread.so.0 0x00002b020f7debb0
3 libc.so.6 0x00002b0210444f77 gsignal + 55
4 libc.so.6 0x00002b02104485e8 abort + 328
5 libc.so.6 0x00002b021043dd43
6 libc.so.6 0x00002b021043ddf2
7 vmjc 0x00000000006154b4 j3::Class::doNew(j3::Jnjvm*) + 196
8 vmjc 0x000000000066eb7c j3::Jnjvm::error(j3::Class*,
j3::JavaMethod*, j3::JavaString*) + 124
9 vmjc 0x000000000066ed63 j3::Jnjvm::nullPointerException() + 51
10 vmjc 0x00000000006362cc
j3::JavaThread::throwNullPointerException(unsigned long) + 140
11 vmjc 0x00000000006cb243 ThrowNullPointerException + 35
12 libjava.so 0x00002b021561a035 Java_java_lang_Object_registerNatives + 21
13 libjava.so 0x00002b021536b96f
Java_java_lang_Object_registerNatives + 4292155727
Aborted (core dumped)
make[2]: *** [/path/to/code/vmkit2/mmtk/java/Debug+Asserts/mmtk-vmkit-lower.bc]
Error 134
[vmkit ./mmtk]: abort with error in ./mmtk/java
make[1]: *** [all] Error 1
[vmkit .]: abort with error in ./mmtk
make: *** [all] Error 1

Thanks for your help,

-- Adam

Hi Adam,

I don’t know which repo you have used? Because only the llvm repo is maintained (not the gforge one), and vmkit2 comes from gforge… By the way, how did you found the gforge repo, it should not be referenced anymore from the web?

See you,
Gaël

I guess I mispoke, I checked out the source from
http://llvm.org/svn/llvm-project/vmkit/trunk. I thought this was
vmkit2. I guess I was just referring to vmkit then.

I also misunderstood :slight_smile: So, in this case, the problem is that your
version of openjdk is probably not supported. In fact, we only support
the version 7u23 of openjdk :slight_smile: You can find this version here:
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u25-oth-JPR

Currently, I'm modifying the internal design of vmkit and I'm not
working on the trunk, that's why the version of the trunk requires a
old version of the jdk.

See you,
Gaël

Thanks for your help so far Gaël, but I ran into more trouble. I
installed the JDK on my system and the messages indicated the JVM
version needs to be 1.6. Did you intend to link me to Java 7?

LD_LIBRARY_PATH=/usr/lib/jvm/jdk1.7.0_25/jre/lib/amd64/server/:/usr/lib/jvm/jdk1.7.0_25/jre/:/usr/lib/jvm/jdk1.7.0_25/jre/lib/amd64/

Buildfile: /path/to/code/vmkit/mmtk/java/build.xml

main:
    [javac] Compiling 1 source file to /path/to/code/vmkit/mmtk/java/classes
    [javac] warning: [options] bootstrap class path not set in
conjunction with -source 1.5
    [javac] 1 warning
      [jar] Building jar: /path/to/code/vmkit/mmtk/java/mmtk-vmkit.jar

BUILD SUCCESSFUL
Total time: 1 second
[vmkit ./mmtk/java]: Compiling 'mmtk-vmkit.jar'
WARNING: Class file 'java/lang/Object' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Cloneable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/io/Serializable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/String' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Comparable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/CharSequence' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/io/FileNotFoundException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/io/IOException' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Exception' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Throwable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NoSuchFieldError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/IncompatibleClassChangeError' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/LinkageError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Error' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Enum' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/annotation/Annotation' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ClassLoader' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ClassNotFoundException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ReflectiveOperationException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ClassFormatError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/security/PrivilegedActionException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Thread' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Runnable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Class' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/GenericDeclaration' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/Type' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/AnnotatedElement' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NoSuchMethodException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/InvocationTargetException'
requires Java version 1.7. This JVM only supports Java versions up to
1.6.
WARNING: Class file 'java/lang/IndexOutOfBoundsException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/RuntimeException' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/IllegalAccessException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/nio/DirectByteBuffer' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/nio/MappedByteBuffer' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/nio/ByteBuffer' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/nio/Buffer' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'sun/nio/ch/DirectBuffer' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/IllegalArgumentException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/OutOfMemoryError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/VirtualMachineError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/util/Properties' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/util/Hashtable' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/util/Dictionary' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/util/Map' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/CloneNotSupportedException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ClassCastException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NullPointerException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NoSuchFieldException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/SecurityException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/Constructor' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/AccessibleObject' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/Member' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/Method' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/reflect/Field' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/StackTraceElement' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Boolean' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Byte' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Number' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Short' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Character' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Integer' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NumberFormatException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Long' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Float' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Double' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Void' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ArrayStoreException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/IllegalMonitorStateException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/InterruptedException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ArrayIndexOutOfBoundsException'
requires Java version 1.7. This JVM only supports Java versions up to
1.6.
WARNING: Class file 'java/lang/NegativeArraySizeException' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ClassCircularityError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NoClassDefFoundError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/UnsupportedClassVersionError' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/NoSuchMethodError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/InstantiationError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/InstantiationException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/IllegalAccessError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/VerifyError' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ExceptionInInitializerError' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/AbstractMethodError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/UnsatisfiedLinkError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/InternalError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/StackOverflowError' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/UnknownError' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ArithmeticException' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/System' requires Java version 1.7. This
JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/AssertionStatusDirectives' requires
Java version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ThreadGroup' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/Thread$UncaughtExceptionHandler'
requires Java version 1.7. This JVM only supports Java versions up to
1.6.
WARNING: Class file 'sun/reflect/ConstantPool' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'sun/reflect/Reflection' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/Reference' requires Java version
1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/Reference$Lock' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/Reference$ReferenceHandler'
requires Java version 1.7. This JVM only supports Java versions up to
1.6.
WARNING: Class file 'java/lang/ref/ReferenceQueue' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/WeakReference' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/SoftReference' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/ref/PhantomReference' requires Java
version 1.7. This JVM only supports Java versions up to 1.6.
WARNING: Class file 'java/lang/VMString' requires Java version 1.7.
This JVM only supports Java versions up to 1.6.
vmjc: JavaClass.cpp:496: j3::JavaObject *j3::Class::doNew(j3::Jnjvm
*): Assertion `(this->isInitializing() ||
classLoader->getCompiler()->isStaticCompiling() || this ==
classLoader->bootstrapLoader->upcalls->newClass) && "Uninitialized
class when allocating."' failed.
0 vmjc 0x0000000000fa5305 llvm::sys::PrintStackTrace(_IO_FILE*) + 37
1 vmjc 0x0000000000fa57f3
2 libpthread.so.0 0x00002b744d458bb0
3 libc.so.6 0x00002b744e0bef77 gsignal + 55
4 libc.so.6 0x00002b744e0c25e8 abort + 328
5 libc.so.6 0x00002b744e0b7d43
6 libc.so.6 0x00002b744e0b7df2
7 vmjc 0x00000000006153a4 j3::Class::doNew(j3::Jnjvm*) + 196
8 vmjc 0x000000000066ea6c j3::Jnjvm::error(j3::Class*,
j3::JavaMethod*, j3::JavaString*) + 124
9 vmjc 0x000000000066ec53 j3::Jnjvm::nullPointerException() + 51
10 vmjc 0x00000000006361bc
j3::JavaThread::throwNullPointerException(unsigned long) + 140
11 vmjc 0x00000000006cb133 ThrowNullPointerException + 35
12 libjava.so 0x00002b74538a6804 Java_java_lang_Object_registerNatives + 20
13 libjava.so 0x00002b74533fab1f
Java_java_lang_Object_registerNatives + 4290069295
Aborted (core dumped)
make[2]: *** [/path/to/code/vmkit/mmtk/java/Debug+Asserts/mmtk-vmkit-lower.bc]
Error 134
[vmkit ./mmtk]: abort with error in ./mmtk/java
make[1]: *** [all] Error 1
[vmkit .]: abort with error in ./mmtk
make: *** [all] Error 1

Arg, you have to use a version strictly before the 7u25 (probably the
7u21), sorry!

I hope that it will work, because I also have problem to compile the
trunk version of vmkit (I haven't tested the trunk since two months).
I'm investigating. Tell me if it works for you with an older version
:slight_smile:

See you,
Gaël

PS: the warning messages are not important

Ok, I have exactly the same problem when I compile, I will try to
understand where is the problem.

Gaël

Is there a particular revision in the repository that I can checkout
and work from? Thanks,

-- Adam

Hi Adam,

So, my problem was probably not related to yours, I have a strange
execution stack and I don't see why. Anyway, I have committed a
revision that should work with this setting:

* llvm 3.3 and clang 3.3 (don't use the head of the svn because llvm
APIs have change and I don't want to backport these changes in the
trunk, they are too volatile between llvm versions)
* jdk1.6.0_23 (version 6u23)
* head of vmkit svn

If you don't want to install openjdk to not pollute your linux, you
can directly use your own openjdk directory, but you will have to
manually define a LD_LIBRARY_PATH with the path of libjvm.so (during
compilation and after to execute j3), for me it's:

LD_LIBRARY_PATH=/home/gael/vmkit/jdk1.6.0_23/jre/lib/amd64/server/

I hope that this time, it will work for you. At least, for me,
everything is ok :slight_smile:

Gaël