Bug 1900004

Summary: libreoffice does not recognize custom OpenJDK vendor name
Product: Red Hat Enterprise Linux 7 Reporter: Janne Pulkkinen <janne.pulkkinen+redhat-bugzilla>
Component: libreofficeAssignee: Caolan McNamara <caolanm>
Status: NEW --- QA Contact: Bill Sanford <bsanford>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.9CC: bsanford, vpvainio
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Janne Pulkkinen 2020-11-20 15:09:10 UTC
Description of problem:
When running `soffice`, the executable `/usr/lib64/libreoffice/program/javaldx` will be executed which will check the Java implementation and compare its vendor name against those listed in `/usr/lib64/libreoffice/program/javavendors.xml` and the list stored in the shared library `/usr/lib64/libreoffice/program/libjvmfwklo.so`. If the Java vendor name isn't recognized, the following warning will be printed to stderr:

```
javaldx: Could not find a Java Runtime Environment!
Warning: failed to read path from javaldx
```

Starting with at least the version java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9, the Java implementation has the custom VM vendor name "Red Hat, Inc." instead of "Oracle Corporation" as used before. This can be checked using the command `java -XshowSettings:properties -version`.

I was able to fix the issue by adding the "Red Hat, Inc." vendor name to both `/usr/lib64/libreoffice/program/javavendors.xml` and the shared library, which is compiled from a CXX file at `jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx`. The exact file can be found from libreoffice-core:

https://github.com/LibreOffice/core/blob/master/jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx

Version-Release number of selected component (if applicable):
java-1.8.0-openjdk-1.8.0.272.b10
libreoffice-base-5.3.6.1

How reproducible:
Reproducible most of the time when calling `soffice`. `javaldx` isn't always called for some reason related to the environment, in which case `/usr/lib64/libreoffice/program/javaldx` can be called directly to reproduce the issue.

Steps to Reproduce:
1. Install `java-1.8.0-openjdk` and `libreoffice`.
2. Run `soffice`

Actual results:
The warning `javaldx: Could not find a Java Runtime Environment!` will be printed in addition to the usual output.

Expected results:
No additional output should be printed to stderr

Additional info:
This bug also occurs on CentOS 7.8 and CentOS 8.2.2004.

Downgrading to java-1.8.0-openjdk-1.8.0.262.b10 works as a workaround, although certain newer versions may also work; I haven't tried bisecting the bug further.

Comment 2 Stephan Bergmann 2020-11-20 15:26:15 UTC
The upstream fix is <https://bugs.documentfoundation.org/show_bug.cgi?id=124503> "Support JRE installations with unknown java.vendor property", first appearing in LO 6.1.6.  We could either see backport that, or patch the jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml and jvmfwk/plugins/sunmajor/pluginlib/vendorlist.cxx files.