Running and Distributing in Linux

I’m running a full install of RedHat 9, with JDK version 1.4.2-beta. I downloaded the latest RedHat version of the library (0.5) and extracted it on my harddrive. I then tried to run a simple test:

java -cp .:examples.jar:lwjgl.jar Polygon

I got this error:

Exception in thread “main” java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at org.lwjgl.Sys.initialize(Unknown Source)
at org.lwjgl.Sys.(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

I searched this board for info, and ended up copying the .so files into /usr/local/lib, and then sym-linking .so.0 and .so.0.0.0 versions of the openal lib. I continued to get the same error. Finally, I tried this command line:

java -Djava.library.path=/usr/local/lib -cp .:examples.jar:lwjgl.jar Polygon

This gave me the alternate error:

Exception in thread “main” java.lang.UnsatisfiedLinkError: /usr/local/lib/liblwjgl.so: libopenal.so.0: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1485)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at org.lwjgl.Sys.initialize(Unknown Source)
at org.lwjgl.Sys.(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

I’m not sure what to try next. Also, I’m curios what the process is intended to be for redistributing the library for linux. Do we really expect the end user to copy the libararies into /usr/local/lib? Is there no way to keep all the files in a local install directory?

Also, I will point out that the README that comes with the linux version of the library is clearly just a copy of the windows version. (The classpath uses semicolons for delimeters instead of colons). I would recommend changing this, as well as adding some information on where to put the library files to make things work.

(Okay, third time lucky. Damn you, IE, don’t crash this time…)

I’m not currently developing under Linux, but I expect to fix the second problem you’ll need to install OpenAL:

http://www.openal.org/

Really? I didn’t install OpenAL on my Windows boot to get lwjgl to work there. I assumed that this was because it came with OpenAL.dll, which I figured to be a build of OpenAL itself. Furthermore, the linux version comes with libopenal.so, which I figured to be the linux equivalent of the above dll. Is this not so?

PS - Even in Windows I use Mozilla. IE’s a load of crap. :slight_smile:

Ah, if libopenal.so comes in the archive, try throwing that in /usr/local/lib/ as well and symlinking it as libopenal.so.0

IE’s been annoying me too much recently. I’m only using Windows on this box because the Lucent WinModem drivers for Linux didn’t like my hardware under Mandrake 8. Going through a backup-and-reinstall process at the moment… Keep getting distracted though!

Thunk Brain kicks in, Charlie rereads the post above.

But you’ve already done that I see…

Hrm. Okay, Elias can probably give you an immediate answer, but until then…

What does running an ldd on the liblwjgl.so binary give you? Does it mention libopenal.so.0 as missing? Where is it expecting to find it?

If it can find it, run an ldd on the libopenal.so binary - is there anything missing there?

Ok, trying to give as much info as possible. I’m in /usr/local/lib:

$ ls -l

total 980
-rwxr-xr-x 1 root root 439292 Apr 25 15:27 liblwjgl_d.so
-rwxr-xr-x 1 root root 331228 Apr 25 15:27 liblwjgl.so
-rwxr-xr-x 1 root root 213416 Apr 25 15:27 libopenal.so
lrwxrwxrwx 1 root root 12 Apr 28 09:21 libopenal.so.0 -> libopenal.so
lrwxrwxrwx 1 root root 12 Apr 28 09:21 libopenal.so.0.0.0 -> libopenal.so

$ ldd liblwjgl.so

    libopenal.so.0 => not found
    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4006f000)
    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4007d000)
    libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4015d000)
    libm.so.6 => /lib/tls/libm.so.6 (0x40210000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40232000)
    libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
    libdl.so.2 => /lib/libdl.so.2 (0x4023a000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

$ ldd libopenal.so

    libdl.so.2 => /lib/libdl.so.2 (0x400a5000)
    libm.so.6 => /lib/tls/libm.so.6 (0x400a9000)
    libpthread.so.0 => /lib/tls/libpthread.so.0 (0x400cb000)
    libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

Just to make sure I’m not doing something horribly stupid, that is supposed to be dot-zero at the end of libopenal.so, right? Not dot-capital-oh?

The question as to where libwjgl.so is expecting to find libopenal.so.0 is a good one. I suppose it’s too much to assume pwd. Perhaps there is some environment variable that needs /usr/local/lib appended to it? To be honest, I don’t know where linux stores its search path for libraries.

Yep, that’s a DOT-ZERO. Well, that all looks fine, but for some reason things aren’t looking in /usr/local/lib. Add the directory to the library search path:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Ok, first I want to note that LD_LIBRARY_PATH was not set to anything when I started. After doing the export you mentioned, LD_LIBRARY_PATH is set to “:/usr/local/lib”

That said, check out the output now when I try to run one of the examples:
Xlib: extension “GLX” missing on display “:0.0”.

An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0x4207AFB1
Function=strstr+0x21
Library=/lib/tls/libc.so.6

Current Java thread:
at org.lwjgl.Display.nGetAvailableDisplayModes(Native Method)
at org.lwjgl.Display.getAvailableDisplayModes(Unknown Source)
at BaseWindow.createGLWindow(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

Dynamic libraries:
08048000-0804e000 r-xp 00000000 03:03 1681919 /usr/java/j2sdk1.4.2/bin/java
0804e000-0804f000 rw-p 00005000 03:03 1681919 /usr/java/j2sdk1.4.2/bin/java
40000000-40015000 r-xp 00000000 03:03 734823 /lib/ld-2.3.2.so
40015000-40016000 rw-p 00014000 03:03 734823 /lib/ld-2.3.2.so
40017000-4001f000 r-xp 00000000 03:03 817198 /usr/java/j2sdk1.4.2/jre/lib/i386/native_threads/libhpi.so
4001f000-40020000 rw-p 00007000 03:03 817198 /usr/java/j2sdk1.4.2/jre/lib/i386/native_threads/libhpi.so
40020000-4002b000 r-xp 00000000 03:03 734847 /lib/libnss_files-2.3.2.so
4002b000-4002c000 rw-p 0000a000 03:03 734847 /lib/libnss_files-2.3.2.so
4002c000-40030000 rw-s 00000000 03:03 1257573 /tmp/hsperfdata_psiegel/2684
40030000-40033000 r–s 00000000 03:03 817193 /usr/java/j2sdk1.4.2/jre/lib/ext/dnsns.jar
40034000-4003f000 r-xp 00000000 03:03 1551415 /lib/tls/libpthread-0.34.so
4003f000-40040000 rw-p 0000a000 03:03 1551415 /lib/tls/libpthread-0.34.so
40042000-40045000 r-xp 00000000 03:03 734452 /lib/libdl-2.3.2.so
40045000-40046000 rw-p 00002000 03:03 734452 /lib/libdl-2.3.2.so
40047000-4043c000 r-xp 00000000 03:03 164596 /usr/java/j2sdk1.4.2/jre/lib/i386/client/libjvm.so
4043c000-40458000 rw-p 003f4000 03:03 164596 /usr/java/j2sdk1.4.2/jre/lib/i386/client/libjvm.so
4046a000-4047c000 r-xp 00000000 03:03 734831 /lib/libnsl-2.3.2.so
4047c000-4047d000 rw-p 00011000 03:03 734831 /lib/libnsl-2.3.2.so
4047f000-404a0000 r-xp 00000000 03:03 1551411 /lib/tls/libm-2.3.2.so
404a0000-404a1000 rw-p 00020000 03:03 1551411 /lib/tls/libm-2.3.2.so
404a1000-404b1000 r-xp 00000000 03:03 164708 /usr/java/j2sdk1.4.2/jre/lib/i386/libverify.so
404b1000-404b3000 rw-p 0000f000 03:03 164708 /usr/java/j2sdk1.4.2/jre/lib/i386/libverify.so
404b3000-404d3000 r-xp 00000000 03:03 164694 /usr/java/j2sdk1.4.2/jre/lib/i386/libjava.so
404d3000-404d5000 rw-p 0001f000 03:03 164694 /usr/java/j2sdk1.4.2/jre/lib/i386/libjava.so
404d5000-404e9000 r-xp 00000000 03:03 164709 /usr/java/j2sdk1.4.2/jre/lib/i386/libzip.so
404e9000-404ec000 rw-p 00013000 03:03 164709 /usr/java/j2sdk1.4.2/jre/lib/i386/libzip.so
404ec000-41e6f000 r–s 00000000 03:03 1682898 /usr/java/j2sdk1.4.2/jre/lib/rt.jar
41eb9000-41ecf000 r–s 00000000 03:03 1682896 /usr/java/j2sdk1.4.2/jre/lib/sunrsasign.jar
41ecf000-41fa9000 r–s 00000000 03:03 1682895 /usr/java/j2sdk1.4.2/jre/lib/jsse.jar
41fa9000-41fba000 r–s 00000000 03:03 1682887 /usr/java/j2sdk1.4.2/jre/lib/jce.jar
42000000-4212f000 r-xp 00000000 03:03 1550402 /lib/tls/libc-2.3.2.so
4212f000-42132000 rw-p 0012f000 03:03 1550402 /lib/tls/libc-2.3.2.so
42134000-4268d000 r–s 00000000 03:03 1682888 /usr/java/j2sdk1.4.2/jre/lib/charsets.jar
4c8f5000-4caf5000 r–p 00000000 03:03 493797 /usr/lib/locale/locale-archive
4ccf9000-4cd06000 r–s 00000000 03:03 817194 /usr/java/j2sdk1.4.2/jre/lib/ext/ldapsec.jar
4cd06000-4cdc2000 r–s 00000000 03:03 817203 /usr/java/j2sdk1.4.2/jre/lib/ext/localedata.jar
4cdc2000-4cdde000 r–s 00000000 03:03 817196 /usr/java/j2sdk1.4.2/jre/lib/ext/sunjce_provider.jar
4cdde000-4ce6e000 r–s 00000000 03:03 703013 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/examples.jar
4ce6e000-4ce8c000 r–s 00000000 03:03 703018 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/lwjgl.jar
4ce8c000-4cece000 r-xp 00000000 03:03 703014 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/liblwjgl.so
4cece000-4cedd000 rw-p 00042000 03:03 703014 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/liblwjgl.so
4cedd000-4cf0f000 r-xp 00000000 03:03 1975815 /usr/local/lib/libopenal.so
4cf0f000-4cf12000 rw-p 00031000 03:03 1975815 /usr/local/lib/libopenal.so
4cf81000-4cf8e000 r-xp 00000000 03:03 1762617 /usr/X11R6/lib/libXext.so.6.4
4cf8e000-4cf8f000 rw-p 0000c000 03:03 1762617 /usr/X11R6/lib/libXext.so.6.4
4cf8f000-4d06b000 r-xp 00000000 03:03 1762609 /usr/X11R6/lib/libX11.so.6.2
4d06b000-4d06e000 rw-p 000db000 03:03 1762609 /usr/X11R6/lib/libX11.so.6.2
4d06e000-4d117000 r-xp 00000000 03:03 375414 /usr/lib/libstdc++.so.5.0.3
4d117000-4d11c000 rw-p 000a9000 03:03 375414 /usr/lib/libstdc++.so.5.0.3
4d121000-4d128000 r-xp 00000000 03:03 734468 /lib/libgcc_s-3.2.2-20030225.so.1
4d128000-4d129000 rw-p 00007000 03:03 734468 /lib/libgcc_s-3.2.2-20030225.so.1
4d129000-4d189000 r-xp 00000000 03:03 1077284 /usr/lib/tls/libGL.so.1.0.4363
4d189000-4d190000 rwxp 0005f000 03:03 1077284 /usr/lib/tls/libGL.so.1.0.4363
4d192000-4d636000 r-xp 00000000 03:03 1077279 /usr/lib/tls/libGLcore.so.1.0.4363
4d636000-4d640000 rw-p 004a4000 03:03 1077279 /usr/lib/tls/libGLcore.so.1.0.4363
4d6e7000-4d762000 r-xp 00000000 03:03 1762654 /usr/X11R6/lib/libGLU.so.1.3
4d762000-4d764000 rw-p 0007a000 03:03 1762654 /usr/X11R6/lib/libGLU.so.1.3
Heap at VM Abort:
Heap
def new generation total 576K, used 209K [0x44710000, 0x447b0000, 0x44bf0000) eden space 512K, 40% used [0x44710000, 0x44744490, 0x44790000)
from space 64K, 0% used [0x44790000, 0x44790000, 0x447a0000)
to space 64K, 0% used [0x447a0000, 0x447a0000, 0x447b0000)
tenured generation total 1408K, used 0K [0x44bf0000, 0x44d50000, 0x48710000)
the space 1408K, 0% used [0x44bf0000, 0x44bf0000, 0x44bf0200, 0x44d50000)
compacting perm gen total 4096K, used 1095K [0x48710000, 0x48b10000, 0x4c710000)
the space 4096K, 26% used [0x48710000, 0x48821da0, 0x48821e00, 0x48b10000)
Local Time = Mon Apr 28 13:22:07 2003
Elapsed Time = 0

The exception above was detected in native code outside the VM

Java VM: Java HotSpot™ Client VM (1.4.2-beta-b19 mixed mode)

An error report file has been saved as hs_err_pid2684.log.

Please refer to the file for further information.

Aborted

Thnx charlie!

Well, the openal library has to be some place the system looks, or in the java.library.path. However, the latest dump doesn’t look good. First, it shouldn’t ever crash there, so could you give me a dump with the debug lib? (Run the examples with the -ea switch)

Second, the “GLX” is missing message indicates that OpenGL is not available on the display. Have you tried a native OpenGL application?

  • elias

[quote]Well, the openal library has to be some place the system looks, or in the java.library.path.
[/quote]
Well, it looks like java.library.path was set correctly, but it still couldn’t find it. Does the java.library.path get added to the library search path for the application’s lifetime, or is it just used for finding libraries Java directly references? As in, will liblwjgl.so inherit that search path in order to then locate libopenal.so?

[quote]Second, the “GLX” is missing message indicates that OpenGL is not available on the display. Have you tried a native OpenGL application?
[/quote]
Yeah, that’s not good. Can you run any of the Mesa demos (for example)?

It’s not inherited, but it should be manually searched by our OAL loading code. But that might very well be broken or something.

  • elias

Ok, I have significant findings to report.

Yes, something was very wrong with OpenGL on my machine in general. I was using the default drivers (this is a pretty clean RH9 install) for my GeForce 3 card. A natively compiled (written in C) app using OpenGL gave the same weird error of " Xlib: extension “GLX” missing on display “:0.0”." Then it died pretty cleanly. I went to nvidia.com and got and installed the latest drivers (tangent: wow, they’ve got their act together and finally made a real linux installer!) The test app now runs fine.

So, new drivers in hand I opened a fresh shell and typed:

java -cp .:examples.jar:lwjgl.jar Polygon

Exception in thread “main” java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1491)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at org.lwjgl.Sys.initialize(Unknown Source)
at org.lwjgl.Sys.(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

Next, I tried using the -D argument to specify my library path:

$ java -Djava.library.path=/usr/local/lib -cp .:examples.jar:lwjgl.jar Polygon

Exception in thread “main” java.lang.UnsatisfiedLinkError: /usr/local/lib/liblwjgl.so: libopenal.so.0: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1485)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at org.lwjgl.Sys.initialize(Unknown Source)
at org.lwjgl.Sys.(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

Finally, I set the environment variable LD_LIBRARY_PATH:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
$ java -cp .:examples.jar:lwjgl.jar Polygon

Eureeka! Success at last.

So, I suppose I can set this variable in my .bash_rc and get on with development. But what’s the process intended to be like for redistribution? Currently, I’ve had to copy some files into /usr/local/lib, make some symbolic links within that directory, and then set an environment variable. It seems a bit much.

Is there currently or going to be a better way around this? Some method of keeping all the lib files in a local install directory?

[quote] It’s not inherited, but it should be manually searched by our OAL loading code. But that might very well be broken or something.
[/quote]
afaik, oal lib searching, was added after 0.5?
other than that, we need to verify this now before we release 0.6

By the way, if you are interested in finding out while the default drivers in RH9 were failing, or perhaps find where they were failing to make it a more graceful failure, I’d be happy to run any kind of tests you’d like. Just let me know what you need done (step by step instructions would be very helpful) and I’ll do it and report back here.

Thanks for all the help, guys!

Paul

[quote]Eureeka! Success at last.
[/quote]
Fantastic!

[quote]So, I suppose I can set this variable in my .bash_rc and get on with development. But what’s the process intended to be like for redistribution?
[/quote]
Windows has got a lot more attention than Linux (for obvious reasons!) so the Linux installation system is a little rougher round the edges! :wink: Remember they’re only at 0.5 Alpha at the moment - I’m sure things will be much more user-friendly by version 1.0.

[quote]Some method of keeping all the lib files in a local install directory?
[/quote]
Well, putting things in /usr/local/lib is very much a “box install” policy. As your system wasn’t even looking there at first, the same process you followed should work for installing into current directory - make the symlinks, set the java.library.path, set the LD_LIBRARY_PATH. From what Matzon says the LD_LIBRARY_PATH bit will be unnecessary soon, and I expect the symlink bit will disappear too, or at the least the binary archive will just contain the required symlinks already! :wink:

[quote]By the way, if you are interested in finding out while the default drivers in RH9 were failing[…]
[/quote]
If someone could confirm that it’s a general problem, maybe it’s a candidate for the readme file?

I understand that it’s still in Alpha. I didn’t expect any kind of instantaneous bug fixes. I was just curious if there was a plan in place for redistribution in linux. But perhaps it’s a bit too early for that.

What does surprise me though, is that the -Djava.library.path doesn’t seem to help matters. I mean, it makes the app able to find lwjgl.so, but not openal.so. Setting LD_LIBRARY_PATH takes care of this, completely. That is, once I’ve set that variable, I no longer have to include the -Djava.library.path part at all.

So I guess I’m curious to know how it is the lwjgl.so looks for openal.so. It would appear to me that it simply uses this environment variable. Couldn’t perhaps the java code pass the library path to lwjgl, which would in turn use that path to try and find openal? That would make the -D option work without having to set any environment variables.

That is exactly the behaviour in the upcoming 0.6 release, as Matzonm said. However, I would be very grateful if you tried running with assertions on (the -ea switch to java) and with the default drivers under rh9. Then maybe I’ll be able to make it fail gracefully when no GLX is available.

To switch to the default nvidia driver, change the “nvidia” in /etc/X11/XF86Config to “nv”.

  • elias

[quote]So I guess I’m curious to know how it is the lwjgl.so looks for openal.so.
[/quote]
Simple. liblwjgl.so is required to run, and is loaded by the VM. The VM searches for the file at the java.library.path and at the current working directory.
OpenAL is loaded natively by us (as to allow dynanic binding - so that people not using OpenAL can exclude the library). pre 0.6 we just looked in current working directory - this has now been changed to look at current working directory AND java.library.path.

Why linux searches ‘/usr/local/lib/’ is beyond me though… - I only use Windows (and since BeOS doesn’t have a proper VM, I’ve got no unix (like) environment (NO I won’t be installing cygwin))

Ok, with the default drivers:

$ java -ea -cp .:examples.jar:lwjgl.jar Polygon
Xlib: extension “GLX” missing on display “:0.0”.

An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0x4207AFB1
Function=strstr+0x21
Library=/lib/tls/libc.so.6

Current Java thread:
at org.lwjgl.Display.nGetAvailableDisplayModes(Native Method)
at org.lwjgl.Display.getAvailableDisplayModes(Unknown Source)
at BaseWindow.createGLWindow(Unknown Source)
at BaseWindow.start(Unknown Source)
at Polygon.main(Unknown Source)

Dynamic libraries:
08048000-0804e000 r-xp 00000000 03:03 1681919 /usr/java/j2sdk1.4.2/bin/java
0804e000-0804f000 rw-p 00005000 03:03 1681919 /usr/java/j2sdk1.4.2/bin/java
40000000-40015000 r-xp 00000000 03:03 734823 /lib/ld-2.3.2.so
40015000-40016000 rw-p 00014000 03:03 734823 /lib/ld-2.3.2.so
40017000-4001f000 r-xp 00000000 03:03 817198 /usr/java/j2sdk1.4.2/jre/lib/i386/native_threads/libhpi.so
4001f000-40020000 rw-p 00007000 03:03 817198 /usr/java/j2sdk1.4.2/jre/lib/i386/native_threads/libhpi.so
40020000-4002b000 r-xp 00000000 03:03 734847 /lib/libnss_files-2.3.2.so
4002b000-4002c000 rw-p 0000a000 03:03 734847 /lib/libnss_files-2.3.2.so
4002c000-40030000 rw-s 00000000 03:03 1257573 /tmp/hsperfdata_psiegel/7721
40030000-40033000 r–s 00000000 03:03 817193 /usr/java/j2sdk1.4.2/jre/lib/ext/dnsns.jar
40034000-4003f000 r-xp 00000000 03:03 1551415 /lib/tls/libpthread-0.34.so
4003f000-40040000 rw-p 0000a000 03:03 1551415 /lib/tls/libpthread-0.34.so
40042000-40045000 r-xp 00000000 03:03 734452 /lib/libdl-2.3.2.so
40045000-40046000 rw-p 00002000 03:03 734452 /lib/libdl-2.3.2.so
40047000-4043c000 r-xp 00000000 03:03 164596 /usr/java/j2sdk1.4.2/jre/lib/i386/client/libjvm.so
4043c000-40458000 rw-p 003f4000 03:03 164596 /usr/java/j2sdk1.4.2/jre/lib/i386/client/libjvm.so
4046a000-4047c000 r-xp 00000000 03:03 734831 /lib/libnsl-2.3.2.so
4047c000-4047d000 rw-p 00011000 03:03 734831 /lib/libnsl-2.3.2.so
4047f000-404a0000 r-xp 00000000 03:03 1551411 /lib/tls/libm-2.3.2.so
404a0000-404a1000 rw-p 00020000 03:03 1551411 /lib/tls/libm-2.3.2.so
404a1000-404b1000 r-xp 00000000 03:03 164708 /usr/java/j2sdk1.4.2/jre/lib/i386/libverify.so
404b1000-404b3000 rw-p 0000f000 03:03 164708 /usr/java/j2sdk1.4.2/jre/lib/i386/libverify.so
404b3000-404d3000 r-xp 00000000 03:03 164694 /usr/java/j2sdk1.4.2/jre/lib/i386/libjava.so
404d3000-404d5000 rw-p 0001f000 03:03 164694 /usr/java/j2sdk1.4.2/jre/lib/i386/libjava.so
404d5000-404e9000 r-xp 00000000 03:03 164709 /usr/java/j2sdk1.4.2/jre/lib/i386/libzip.so
404e9000-404ec000 rw-p 00013000 03:03 164709 /usr/java/j2sdk1.4.2/jre/lib/i386/libzip.so
404ec000-41e6f000 r–s 00000000 03:03 1682898 /usr/java/j2sdk1.4.2/jre/lib/rt.jar
41eb9000-41ecf000 r–s 00000000 03:03 1682896 /usr/java/j2sdk1.4.2/jre/lib/sunrsasign.jar
41ecf000-41fa9000 r–s 00000000 03:03 1682895 /usr/java/j2sdk1.4.2/jre/lib/jsse.jar
41fa9000-41fba000 r–s 00000000 03:03 1682887 /usr/java/j2sdk1.4.2/jre/lib/jce.jar
42000000-4212f000 r-xp 00000000 03:03 1550402 /lib/tls/libc-2.3.2.so
4212f000-42132000 rw-p 0012f000 03:03 1550402 /lib/tls/libc-2.3.2.so
42134000-4268d000 r–s 00000000 03:03 1682888 /usr/java/j2sdk1.4.2/jre/lib/charsets.jar
4c8f5000-4caf5000 r–p 00000000 03:03 493797 /usr/lib/locale/locale-archive
4ccf9000-4cd06000 r–s 00000000 03:03 817194 /usr/java/j2sdk1.4.2/jre/lib/ext/ldapsec.jar
4cd06000-4cdc2000 r–s 00000000 03:03 817203 /usr/java/j2sdk1.4.2/jre/lib/ext/localedata.jar
4cdc2000-4cdde000 r–s 00000000 03:03 817196 /usr/java/j2sdk1.4.2/jre/lib/ext/sunjce_provider.jar
4cdde000-4ce6e000 r–s 00000000 03:03 703013 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/examples.jar
4ce6e000-4ce8c000 r–s 00000000 03:03 703018 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/lwjgl.jar
4ce8c000-4cee5000 r-xp 00000000 03:03 703015 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/liblwjgl_d.so
4cee5000-4cef7000 rw-p 00059000 03:03 703015 /home/psiegel/lwjgl/lwjgl-rh8.0-0.5/lwjgl-0.5/liblwjgl_d.so
4cef8000-4cf2a000 r-xp 00000000 03:03 1975815 /usr/local/lib/libopenal.so
4cf2a000-4cf2d000 rw-p 00031000 03:03 1975815 /usr/local/lib/libopenal.so
4cf9c000-4cfa9000 r-xp 00000000 03:03 1762617 /usr/X11R6/lib/libXext.so.6.4
4cfa9000-4cfaa000 rw-p 0000c000 03:03 1762617 /usr/X11R6/lib/libXext.so.6.4
4cfaa000-4d086000 r-xp 00000000 03:03 1762609 /usr/X11R6/lib/libX11.so.6.2
4d086000-4d089000 rw-p 000db000 03:03 1762609 /usr/X11R6/lib/libX11.so.6.2
4d089000-4d132000 r-xp 00000000 03:03 375414 /usr/lib/libstdc++.so.5.0.3
4d132000-4d137000 rw-p 000a9000 03:03 375414 /usr/lib/libstdc++.so.5.0.3
4d13c000-4d143000 r-xp 00000000 03:03 734468 /lib/libgcc_s-3.2.2-20030225.so.1
4d143000-4d144000 rw-p 00007000 03:03 734468 /lib/libgcc_s-3.2.2-20030225.so.1
4d144000-4d1a4000 r-xp 00000000 03:03 1077284 /usr/lib/tls/libGL.so.1.0.4363
4d1a4000-4d1ab000 rwxp 0005f000 03:03 1077284 /usr/lib/tls/libGL.so.1.0.4363
4d1ad000-4d651000 r-xp 00000000 03:03 1077279 /usr/lib/tls/libGLcore.so.1.0.4363
4d651000-4d65b000 rw-p 004a4000 03:03 1077279 /usr/lib/tls/libGLcore.so.1.0.4363
4d702000-4d77d000 r-xp 00000000 03:03 1762654 /usr/X11R6/lib/libGLU.so.1.3
4d77d000-4d77f000 rw-p 0007a000 03:03 1762654 /usr/X11R6/lib/libGLU.so.1.3

Heap at VM Abort:
Heap
def new generation total 576K, used 209K [0x44710000, 0x447b0000, 0x44bf0000) eden space 512K, 40% used [0x44710000, 0x44744628, 0x44790000)
from space 64K, 0% used [0x44790000, 0x44790000, 0x447a0000)
to space 64K, 0% used [0x447a0000, 0x447a0000, 0x447b0000)
tenured generation total 1408K, used 0K [0x44bf0000, 0x44d50000, 0x48710000)
the space 1408K, 0% used [0x44bf0000, 0x44bf0000, 0x44bf0200, 0x44d50000)
compacting perm gen total 4096K, used 1095K [0x48710000, 0x48b10000, 0x4c710000)
the space 4096K, 26% used [0x48710000, 0x48821e98, 0x48822000, 0x48b10000)

Local Time = Tue Apr 29 09:14:58 2003
Elapsed Time = 0

The exception above was detected in native code outside the VM

Java VM: Java HotSpot™ Client VM (1.4.2-beta-b19 mixed mode)

An error report file has been saved as hs_err_pid7721.log.

Please refer to the file for further information.

Aborted

I’ve got that log file saves as well if you want it. Does this board support attachments?