JavaCall crashes Julia 1.6.3 on macOS #151
Copy link
Copy link
Closed
Labels
Description
In Julia 1.6.3, JavaCall.init() causes a Segmentation fault. The same happens with version 1.7.0-rc1. It works in version 1.6.2.
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.6.3 (2021-09-23)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> versioninfo()
Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
OS: macOS (x86_64-apple-darwin19.5.0)
CPU: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, haswell)
Environment:
JULIA_COPY_STACKS = 1
julia> using JavaCall
julia> JavaCall.init()
signal (11): Segmentation fault: 11
in expression starting at REPL[3]:1
unknown function (ip: 0x14151552d)
Allocations: 5345101 (Pool: 5343172; Big: 1929); GC: 7
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.7.0-rc1 (2021-09-12)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> versioninfo()
Julia Version 1.7.0-rc1
Commit 9eade6195e (2021-09-12 06:45 UTC)
Platform Info:
OS: macOS (x86_64-apple-darwin19.6.0)
CPU: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, haswell)
Environment:
JULIA_COPY_STACKS = 1
julia> using JavaCall
julia> JavaCall.init()
signal (11): Segmentation fault: 11
in expression starting at REPL[3]:1
unknown function (ip: 0x14655352d)
Allocations: 4830421 (Pool: 4828125; Big: 2296); GC: 6
Reactions are currently unavailable
Activity
mkitti commentedon Oct 11, 2021
Thanks for the issue. Have you tried this on any other operating systems?
mkitti commentedon Oct 11, 2021
I just tried 1.6.3 on Linux and Windows:
Linux:
Windows:
KenziTrader commentedon Oct 11, 2021
In Julia 1.6.2 I also get the
Segmentation faultbut it doesn't crash. In v1.6.3 or v1.7.0-rc1 is crashes the Julia session. I also tried it withoutJULIA_COPY_STACKS = 1.mkitti commentedon Oct 11, 2021
Perhaps this is a variation of a known issue:
https://github.com/JuliaInterop/JavaCall.jl/blob/575f4514a1604c8c880667ee6e1398ecdf94647c/doc/faq.md#segault-on-osx
Have you tried starting Julia with
--handle-signals=no?KenziTrader commentedon Oct 11, 2021
Yes, starting Julia 1.6.3 with
--handle-signals=noworks.Strange that in 1.6.2 the
Segmentation faultdoesn't cause Julia to crash but in 1.6.3 it does.mkitti commentedon Oct 11, 2021
I suspect https://github.com/JuliaLang/julia/pull/40056/files may have affected this.
[-]JavaCall segfaults on Julia 1.6.3[/-][+]JavaCall crashes Julia 1.6.3 on macOS[/+]KenziTrader commentedon Oct 11, 2021
But with
--handle-signals=noI cannot stop myPlutoserver anymore withCtrl+C. I have to usekill -9.mkitti commentedon Oct 11, 2021
I talked to @vtjnash on Slack and confirmed that JuliaLang/julia#40056 is at the heart of this change. We may be stuck until we implement signal chaining for Julia.
As we wait for Julia to attempt to address this upstream, can you see if
JavaCall.init("-Xrs")helps?-Xrsis the Java counter part to Julia's--handle-signals=no.https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-3B1CE181-CD30-4178-9602-230B800D4FAE
KenziTrader commentedon Oct 11, 2021
Regretfully also
JavaCall.init("-Xrs")crashes Julia 1.6.3 on MacOS.mkitti commentedon Oct 11, 2021
Are you able to use any other version of Java?
Another way to do this, might be starting Java first, and then Julia. In this case, we may be able to take advantage of Java's signal chaining. The main reason I'm asking about Java versions is that newer Java versions (16+) have a new incubating facility to call into native code ( https://docs.oracle.com/en/java/javase/16/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/package-summary.html )
KenziTrader commentedon Oct 12, 2021
Also with
Java SE 17it crashes Julia with and without-Xrs.I don't know how to start Java first and then Julia.
For the time being I'll start Julia with
--handle-signals=no.ViralBShah commentedon Nov 5, 2025
In CI, I see that with a recent Java and Julia version on OS X x86, this works fine.