bmad-sim / GTPSA.jl

Julia interface to the Generalised Truncated Power Series Algebra (GTPSA) library

Home Page:https://bmad-sim.github.io/GTPSA.jl/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GTPSA bombs out of Julia on error

DavidSagan opened this issue · comments

Instead of throwing a Julia error the following bombs out of Julia and returns to the Unix command line:

julia> using GTPSA

julia> x = vars()

[82309] signal (11.2): Segmentation fault: 11
in expression starting at REPL[2]:1
unsafe_load at ./pointer.jl:119 [inlined]
unsafe_load at ./pointer.jl:119 [inlined]
numvars at /Users/dcs16/.julia/dev/GTPSA/src/utils.jl:16 [inlined]
vars at /Users/dcs16/.julia/dev/GTPSA/src/ctors.jl:18
vars at /Users/dcs16/.julia/dev/GTPSA/src/ctors.jl:18
unknown function (ip: 0x104ac8093)
... etc.
jl_repl_entrypoint at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-10/src/jlapi.c:731
Allocations: 2906 (Pool: 2898; Big: 8); GC: 0
Segmentation fault: 11
MAC:~/.julia/dev/GTPSA> 

This is actually a Julia bug, and is occurring because there is no Descriptor defined. It attempts to use the default Descriptor (which is null) and when "getting" the numvar of that Descriptor it segfaults

Since I don't expect vars to be called often, I could put the check in there (as well as complexvars, params, complexparams). mono, TPS, and ComplexTPS will give a descriptive error from the C code for this because it attempts to create a TPS before getting the number of variables/parameters.

Yes a check here would make the package less frustrating to the User.

Fixed in #763f784