From: Roel Janssen <roel@gnu.org>
To: guix-devel <guix-devel@gnu.org>
Subject: IcedTea is not linking correctly with libjvm.so
Date: Sat, 21 Oct 2017 09:05:57 +0200 [thread overview]
Message-ID: <87y3o56kve.fsf@gnu.org> (raw)
Dear Guix,
I ran into a problem with a Java program running with Guix's icedtea-3.
The error message looks like this:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/libnet.so: /gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/libnet.so: failed to map segment from shared object
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at java.net.InetAddress$1.run(InetAddress.java:294)
at java.net.InetAddress$1.run(InetAddress.java:292)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.InetAddress.<clinit>(InetAddress.java:291)
at org.apache.logging.log4j.core.util.NetUtils.getLocalHostname(NetUtils.java:53)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:539)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
...
Looking into this shared object, I found that it cannot find libjvm.so:
$ ldd /gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/libnet.so
linux-vdso.so.1 => (0x00007ffe355ab000)
libdl.so.2 => /gnu/store/20jhhjzgyqkiw1078cyy3891amqm8d4f-glibc-2.25/lib/libdl.so.2 (0x00007f3984931000)
libjvm.so => not found
libpthread.so.0 => /gnu/store/20jhhjzgyqkiw1078cyy3891amqm8d4f-glibc-2.25/lib/libpthread.so.0 (0x00007f39846f8000)
libjava.so => /gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/libjava.so (0x00007f39844cc000)
libgcc_s.so.1 => /gnu/store/0ss2akh5grfdfqnik6mm3lj4yyyb08np-gcc-5.4.0-lib/lib/libgcc_s.so.1 (0x00007f39842b4000)
libc.so.6 => /gnu/store/20jhhjzgyqkiw1078cyy3891amqm8d4f-glibc-2.25/lib/libc.so.6 (0x00007f3983f15000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3984d4d000)
libjvm.so => not found
libverify.so => /gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/libverify.so (0x00007f3983d05000)
libjvm.so => not found
It seems that libjvm.so is in the lib/amd64/server folder of the icedtea
package, so after setting LD_LIBRARY_PATH, the application runs fine:
$ export LD_LIBRARY_PATH=/gnu/store/q9ad5zvxpm2spiddcj01sw3jkm5vpgva-icedtea-3.5.1/lib/amd64/server
I looked into the package recipe, but I cannot find a place where
a change in the compilation process could fix this problem. My only
guess is that in the 'patch-jni-libs phase, we could change the way
dynamically loaded libraries are found.
The way I see it, we could do three things:
1. Fix the recipe to make sure libjvm.so is found, and thus libnet.so is
linked correctly.
2. Copy or make a symlink of libjvm.so to the parent directory
(lib/amd64), where the other libraries are. Maybe then libnet.so can
find libjvm.so.
3. Propagate LD_LIBRARY_PATH with a path to lib/amd64/server. It would
work like in my quick test, but this is my least favorite solution.
Which way would be preferable? I can prepare a patch for option 2, and
see if that works. But maybe option 1 would be better.
Thanks for your time.
Kind regards,
Roel Janssen
next reply other threads:[~2017-10-21 7:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-21 7:05 Roel Janssen [this message]
2017-10-21 9:16 ` IcedTea is not linking correctly with libjvm.so Ludovic Courtès
2017-10-24 13:11 ` Roel Janssen
2017-10-21 20:38 ` Chris Marusich
2017-10-22 15:55 ` Roel Janssen
2017-10-22 20:37 ` Chris Marusich
2017-10-24 11:46 ` Roel Janssen
2017-10-24 13:17 ` Ricardo Wurmus
2017-10-30 10:22 ` Roel Janssen
2017-10-30 16:35 ` Ricardo Wurmus
2017-11-01 9:17 ` Roel Janssen
2017-11-01 16:03 ` Chris Marusich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y3o56kve.fsf@gnu.org \
--to=roel@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).