← Back to team overview

openjdk team mailing list archive

[Bug 1383687] [NEW] Unable to load libjava.so in fakechroot

 

Public bug reported:

When running java inside a chroot run through fakechroot, initialization
fails with the following messages (assuming chroot is set up at
/var/lib/foo/chroot):

OpenJDK 64-Bit Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes
Error occurred during initialization of VM
Unable to load native library: /var/lib/foo/chroot/var/libjava.so: cannot open shared object file: No such file or directory

The path is completely wrong, since although it contains the path to the
chroot the library location is [chroot]/usr/lib/jvm/java-7-openjdk-
amd64/jre/lib/amd64/libjava.so, not [chroot]/var/libjava.so. I turned on
fakechroot debugging to test this - there is a realpath command being
called with the correct path, but the following stat's and fopen's are
completely wrong:

fakechroot: realpath("/var/lib/foo/chroot/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so", &resolved)
fakechroot: __lxstat64_rel(1, "/var", &buf)
fakechroot: __lxstat64_rel(1, "/var/lib", &buf)
fakechroot: __lxstat64_rel(1, "/var/lib/foo", &buf)
fakechroot: fopen("/var/libverify.so", "r")
fakechroot: rel2abs("/var/libverify.so", &resolved)
fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
fakechroot: dlopen("/var/libverify.so", 1)
fakechroot: rel2abs("/var/libverify.so", &resolved)
fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
fakechroot: open("/var/libverify.so", 2048, ...)
fakechroot: rel2abs("/var/libverify.so", &resolved)
fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
fakechroot: fopen("/var/libjava.so", "r")
fakechroot: rel2abs("/var/libjava.so", &resolved)
fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")
fakechroot: dlopen("/var/libjava.so", 1)
fakechroot: rel2abs("/var/libjava.so", &resolved)
fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")
fakechroot: open("/var/libjava.so", 2048, ...)
fakechroot: rel2abs("/var/libjava.so", &resolved)
fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")

Setting JAVA_HOME did not fix the issue, in fact the debug output showed
nothing even changed.

This was seen on Ubuntu 14.04, package version 7u65-2.5.2-3~14.04 on
amd64

** Affects: openjdk-7 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of OpenJDK,
which is subscribed to openjdk-7 in Ubuntu.
https://bugs.launchpad.net/bugs/1383687

Title:
  Unable to load libjava.so in fakechroot

Status in “openjdk-7” package in Ubuntu:
  New

Bug description:
  When running java inside a chroot run through fakechroot,
  initialization fails with the following messages (assuming chroot is
  set up at /var/lib/foo/chroot):

  OpenJDK 64-Bit Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes
  Error occurred during initialization of VM
  Unable to load native library: /var/lib/foo/chroot/var/libjava.so: cannot open shared object file: No such file or directory

  The path is completely wrong, since although it contains the path to
  the chroot the library location is [chroot]/usr/lib/jvm/java-7
  -openjdk-amd64/jre/lib/amd64/libjava.so, not [chroot]/var/libjava.so.
  I turned on fakechroot debugging to test this - there is a realpath
  command being called with the correct path, but the following stat's
  and fopen's are completely wrong:

  fakechroot: realpath("/var/lib/foo/chroot/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so", &resolved)
  fakechroot: __lxstat64_rel(1, "/var", &buf)
  fakechroot: __lxstat64_rel(1, "/var/lib", &buf)
  fakechroot: __lxstat64_rel(1, "/var/lib/foo", &buf)
  fakechroot: fopen("/var/libverify.so", "r")
  fakechroot: rel2abs("/var/libverify.so", &resolved)
  fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
  fakechroot: dlopen("/var/libverify.so", 1)
  fakechroot: rel2abs("/var/libverify.so", &resolved)
  fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
  fakechroot: open("/var/libverify.so", 2048, ...)
  fakechroot: rel2abs("/var/libverify.so", &resolved)
  fakechroot: rel2abs("/var/libverify.so", "/var/libverify.so")
  fakechroot: fopen("/var/libjava.so", "r")
  fakechroot: rel2abs("/var/libjava.so", &resolved)
  fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")
  fakechroot: dlopen("/var/libjava.so", 1)
  fakechroot: rel2abs("/var/libjava.so", &resolved)
  fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")
  fakechroot: open("/var/libjava.so", 2048, ...)
  fakechroot: rel2abs("/var/libjava.so", &resolved)
  fakechroot: rel2abs("/var/libjava.so", "/var/libjava.so")

  Setting JAVA_HOME did not fix the issue, in fact the debug output
  showed nothing even changed.

  This was seen on Ubuntu 14.04, package version 7u65-2.5.2-3~14.04 on
  amd64

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1383687/+subscriptions


Follow ups

References