JuliaInterop / JuliaInterop/JavaCall.jl

Can IJulia Jupyter/Pluto run on Linux without JULIA_COPY_STACKS=1?

Open
#145 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
125
Forks
53
PR merge metrics
No merged PRs in 30d

Description

Hey,

in the REPL it is possible to run a JavaCall dependent library (like View5D) without JULIA_COPY_STACKS=1.
In IJulia or Pluto it is not:

JavaCall.JavaCallError("Either the environmental variable JULIA_COPY_STACKS must be 1 OR JavaCall must be used on the root Task.")

Stacktrace:
 [1] assertroottask_or_goodenv
   @ ~/.julia/packages/JavaCall/tjlYt/src/jvm.jl:236 [inlined]
 [2] _init(opts::Vector{String})
   @ JavaCall ~/.julia/packages/JavaCall/tjlYt/src/jvm.jl:285
 [3] init()
   @ JavaCall ~/.julia/packages/JavaCall/tjlYt/src/jvm.jl:277
 [4] view5d(data::Matrix{Float64}, viewer::Nothing; gamma::Nothing, mode::DisplayMode, element::Int64, time::Int64, show_phase::Bool, keep_zero::Bool, name::Nothing, title::Nothing, properties::Nothing)
   @ View5D ~/.julia/packages/View5D/cKswI/src/View5D.jl:1023
 [5] view5d (repeats 2 times)
   @ ~/.julia/packages/View5D/cKswI/src/View5D.jl:1021 [inlined]
 [6] top-level scope
   @ In[5]:1
 [7] eval
   @ ./boot.jl:360 [inlined]
 [8] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
   @ Base ./loading.jl:1094

Some libraries, like FFTW.jl, crash when JULIA_COPY_STACKS=1 which is unfortunately a deal breaker for my applications.

Can we resolve this situation?

Thanks,

Felix

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the JavaCall stacktrace entry points in src/jvm.jl: assertroottask_or_goodenv at line 236 and _init at line 285, then reproduce the behavior in IJulia or Pluto. Compare it with REPL behavior and the JULIA_COPY_STACKS=1 requirement; done means JavaCall-dependent use works there without breaking libraries such as FFTW.jl.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, julia
Domain
backend
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.