i386 jvm on an amd64...
Arne H. Juul
arnej at pvv.ntnu.no
Fri Mar 30 22:22:32 UTC 2007
On Fri, 30 Mar 2007, David E. Cross wrote:
> (this is with ports built jdk1.5.0-p4)
and FreeBSD 6.x, I'm guessing?
> I am trying to run an i386 jvm on an amd64 architecture (and installed as
> such machine). I get 2 classes of problems, the first is where it is
> unable (for an unknown reason) to find the libjvm.so file.
this I think is because when running a 32-bit binary on a 64-bit machine,
it will use /libexec/ld-elf32.so.1 as the runtime linker, and that will
use LD_32_LIBRARY_PATH instead of the normal LD_LIBRARY_PATH that the
java main program. So when java figures out where the libraries are,
it sets LD_LIBRARY_PATH in the environment and exec(2)'s itself, but
that doesn't actually work. I don't know of any good solution to this,
only a couple of workarounds; doing ldconfig -32 -m is probably the
easiest for now.
> I have fixed this
> via an ldconfig -32 -m .... and the next is libverify.so which I also address
> via a ldconfig -32 -m.. at that point however the java process simply
> segfaults.
I actually tried this very recently and found that the system calls
that the pthread library use on FreeBSD 6 aren't properly translated
between a 64-bit kernel and 32-bit userland, so it overwrites parts
of the thread library and crashes in spectacular ways.
I don't have the know-how to fix the sys/compat/freebsd32 stuff to
include all the various kse_* and thr_* system calls properly, I'll
leave that to the FreeBSD kernel people...
- Arne H. J.
More information about the freebsd-java
mailing list