Date: Fri, 30 Mar 2007 23:51:55 +0200 (CEST) From: "Arne H. Juul" <arnej@pvv.ntnu.no> To: "David E. Cross" <crossd@cs.rpi.edu> Cc: java@freebsd.org Subject: Re: i386 jvm on an amd64... Message-ID: <Pine.LNX.4.62.0703302338210.29831@decibel.pvv.ntnu.no> In-Reply-To: <20070330112806.S74265@monica.cs.rpi.edu> References: <20070330112806.S74265@monica.cs.rpi.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.62.0703302338210.29831>