candlerb opened a new issue #5370: sql worker on Ubuntu 18: libprocname.so 
failing, and failing JVM vendor check
URL: https://github.com/apache/pulsar/issues/5370
 
 
   **Describe the bug**
   
   On Ubuntu 18.04, using the pulsar 2.4.1 binary distribution, the sql worker 
doesn't start.
   
   After fixing python/python3 (#5369), an error is returned about the ELF 
format of `libprocname.so`.  `file` and `nm` say that the file is corrupt.
   
   **To Reproduce**
   
   ```
   $ bin/pulsar sql-worker run
   ERROR: ld.so: object 
'/home/ubuntu/apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/libprocname.so'
 from LD_PRELOAD cannot be preloaded (ELF file's phentsize not the expected 
size): ignored.
   Presto requires an Oracle or OpenJDK JVM (found Private Build)
   $ file lib/presto/bin/procname/Linux-x86_64/libprocname.so
   lib/presto/bin/procname/Linux-x86_64/libprocname.so: ELF 64-bit LSB shared 
object, x86-64, version 1 (SYSV), corrupted program header size, corrupted 
section header size
   $ nm -D --defined-only lib/presto/bin/procname/Linux-x86_64/libprocname.so
   nm: lib/presto/bin/procname/Linux-x86_64/libprocname.so: File format not 
recognized
   $ ls -l lib/presto/bin/procname/Linux-x86_64/libprocname.so
   -rw-r--r-- 1 ubuntu ubuntu 4700 Aug 28 09:06 
lib/presto/bin/procname/Linux-x86_64/libprocname.so
   $ shasum lib/presto/bin/procname/Linux-x86_64/libprocname.so
   5849887050c21d07eb87b4cd513e9135de20942f  
lib/presto/bin/procname/Linux-x86_64/libprocname.so
   ```
   
   **Desktop (please complete the following information):**
    - OS: Ubuntu 18.04, openjdk-8-jre-headless:amd64 8u222-b10-1ubuntu1~18.04.1
   
   **Additional context**
   I have checked that the extracted file I have matches the one in the tarball:
   
   ```
   $ tar -tvzf apache-pulsar-2.4.1-bin.tar.gz | grep procname
   drwxr-xr-x jia/staff         0 2019-08-28 09:06 
apache-pulsar-2.4.1/lib/presto/bin/procname/
   drwxr-xr-x jia/staff         0 2019-08-28 09:06 
apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/
   drwxr-xr-x jia/staff         0 2019-08-28 09:06 
apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-ppc64le/
   -rw-r--r-- jia/staff      4700 2019-08-28 09:06 
apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-x86_64/libprocname.so
   -rw-r--r-- jia/staff     70397 2019-08-28 09:06 
apache-pulsar-2.4.1/lib/presto/bin/procname/Linux-ppc64le/libprocname.so
   ```
   
   4700 bytes does seem rather small for an `.so`, but not impossibly so.  
Indeed, if I separately [download](https://prestosql.io/download.html) 
presto-server-3.2.0.tar.gz (895MB!) it contains a smaller file:
   
   ```
   $ tar -tvzf presto-server-320.tar.gz | grep \\.so
   -rw-r--r--  0 0      0        4144  6 Oct 20:27 
presto-server-320/bin/procname/Linux-x86_64/libprocname.so
   -rw-r--r--  0 0      0       69576  6 Oct 20:27 
presto-server-320/bin/procname/Linux-ppc64le/libprocname.so
   ```
   
   If I examine this file, it is *not* considered corrupt by Ubuntu:
   
   ```
   $ file libprocname.so
   libprocname.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), 
dynamically linked, stripped
   $ nm -D --defined-only libprocname.so
   0000000000200838 A __bss_start
   0000000000200838 A _edata
   0000000000200848 A _end
   00000000000005c8 T _fini
   0000000000000428 T _init
   $
   ```
   
   If I use this to replace the one supplied by pulsar, the original ELF 
message goes away, but the sql worker still won't start, continuing to complain 
about JVM version.
   
   ```
   $ bin/pulsar sql-worker run
   Presto requires an Oracle or OpenJDK JVM (found Private Build)
   ```
   
   However, I *am* using OpenJDK:
   
   ```
   $ dpkg-query -l | grep openjdk
   ii  openjdk-8-jre-headless:amd64   8u222-b10-1ubuntu1~18.04.1         amd64  
      OpenJDK Java runtime, using Hotspot JIT (headless)
   ```
   
   That error message appears in older versions of Presto source, but was 
removed in [this 
commit](https://github.com/prestodb/presto/commit/988f0f2e7bd0a33b2d0d2585cb70eab078fb226c)
 in Aug 2018.  Could it simply be that is pulsar bundling an obsolete version 
of presto?
   
   I believe the source of the "Private Build" text is here:
   
   ```
   $ java -XshowSettings 2>&1 | grep vendor
       java.specification.vendor = Oracle Corporation
       java.vendor = Private Build
       java.vendor.url = http://java.oracle.com/
       java.vendor.url.bug = http://bugreport.sun.com/bugreport/
       java.vm.specification.vendor = Oracle Corporation
       java.vm.vendor = Private Build
   ```
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to