RFR: 8280369: native library cache should be platform/arch specific
Johan Vos
jvos at openjdk.java.net
Tue Mar 29 09:45:50 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.
Marked as reviewed by jvos (Reviewer).
-------------
PR: https://git.openjdk.java.net/jfx/pull/762
More information about the openjfx-dev
mailing list