Integrated: 8280369: native library cache should be platform/arch specific

Glavo duke at openjdk.java.net
Tue Mar 29 12:43:49 UTC 2022


On Fri, 25 Mar 2022 18:12:23 GMT, Glavo <duke at openjdk.java.net> wrote:

> Currently, OpenJFX extracts the native library into a local folder and loads it when it is not part of the JRE.
> 
> Now we have a notable problem with the fact that a platform may actually run programs of multiple CPU architectures.
> 
> Most commonly, 32-bit x86 applications can be executed on Windows AMD64. In addition to this, ARM machines may also execute AMD64 programs by transpiling.
> 
> For OpenJFX of different architectures on the same system, their native libraries have the same file name, but their contents are different. Since they will try to unpack the native library into the same folder, this will cause file conflicts.
> 
> A practical example is when I run the same JavaFX application with both 32-bit and 64-bit Java on a Windows AMD64 platform, and the application that starts later crashes because it cannot unzip the native libraries:
> 
> Crash logs (The length exceeds the GitHub limit): https://paste.ubuntu.com/p/NZBK3pNrh7/
> 
> Here I avoid the problem by adding `os.arch` to the cache path. 
> 
> I ran the tests on Ubuntu 20.04 after the modification and no tests were broken.

This pull request has now been integrated.

Changeset: a0db4730
Author:    Glavo <zjx001202 at gmail.com>
Committer: Johan Vos <jvos at openjdk.org>
URL:       https://git.openjdk.java.net/jfx/commit/a0db473043167d546973e8293e3f208cb1f59f12
Stats:     5 lines in 1 file changed: 2 ins; 0 del; 3 mod

8280369: native library cache should be platform/arch specific

Reviewed-by: jvos

-------------

PR: https://git.openjdk.java.net/jfx/pull/762


More information about the openjfx-dev mailing list