OrdinaryDiffEq.jl
OrdinaryDiffEq.jl copied to clipboard
[m1 apple aarch darwin] `solve` segfault in `ode_determine_initdt`
Fairly certain it is unrelated to #1402. This is almost definitely a julia bug, but opening one here so that its known. I'll also open a real issue in julia
Copy pasting http://diffeqoperators.sciml.ai/dev/symbolic_tutorials/mol_heat/#Adding-parameters into
julia> versioninfo()
Julia Version 1.7.0-rc1
Commit 9eade6195e (2021-09-12 06:45 UTC)
Platform Info:
OS: macOS (arm64-apple-darwin20.5.0)
CPU: Apple M1
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, cyclone)
Environment:
JULIA_NUM_THREADS = 4
JULIA_EDITOR = code
(MTK) pkg> st
Project MTK v0.1.0
Status `~/.julia/dev/MTK/Project.toml`
[479239e8] Catalyst v9.0.0
[82cc6244] DataInterpolations v3.6.0
[9fdde737] DiffEqOperators v4.32.0
[0c46a032] DifferentialEquations v6.19.0
[5b8099bc] DomainSets v0.5.6
[961ee093] ModelingToolkit v6.4.9
[1dea7af3] OrdinaryDiffEq v5.64.0
[91a5bcdd] Plots v1.22.0
[0c5d862f] Symbolics v3.2.3
[1986cc42] Unitful v1.9.0
julia> sol = solve(prob,Tsit5())
signal (11): Segmentation fault: 11
in expression starting at REPL[16]:1
ndigits0zpb at ./intfuncs.jl:0
ndigits0z at ./intfuncs.jl:605
< at ./rational.jl:408
ode_determine_initdt at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/initdt.jl:120
auto_dt_reset! at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/integrators/integrator_interface.jl:329 [inlined]
handle_dt! at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:504
#__init#476 at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:466
__init at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:67
__init at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:67 [inlined]
__init at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:67 [inlined]
__init at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:67 [inlined]
__init at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:67 [inlined]
#__solve#475 at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:4 [inlined]
__solve at /Users/anand/.julia/packages/OrdinaryDiffEq/8K0Aj/src/solve.jl:4 [inlined]
#solve_call#42 at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:61 [inlined]
solve_call at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:48 [inlined]
#solve_up#44 at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:87 [inlined]
solve_up at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:78 [inlined]
#solve#43 at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:73 [inlined]
solve at /Users/anand/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:68
unknown function (ip: 0x10f4167ab)
jl_apply_generic at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
do_call at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
eval_body at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_interpret_toplevel_thunk at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_toplevel_eval_flex at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_toplevel_eval_flex at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_toplevel_eval_flex at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_toplevel_eval_in at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
eval at ./boot.jl:373 [inlined]
eval_user_input at /Users/sabae/src/julia/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:150
repl_backend_loop at /Users/sabae/src/julia/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:244
start_repl_backend at /Users/sabae/src/julia/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:229
#run_repl#47 at /Users/sabae/src/julia/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:362
run_repl at /Users/sabae/src/julia/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:349
jl_apply_generic at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
#929 at ./client.jl:394
jfptr_YY.929_33876 at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
jl_apply_generic at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_f__call_latest at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
#invokelatest#2 at ./essentials.jl:716 [inlined]
invokelatest at ./essentials.jl:714 [inlined]
run_main_repl at ./client.jl:379
exec_options at ./client.jl:309
_start at ./client.jl:495
jfptr__start_33611 at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
jl_apply_generic at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
true_main at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
jl_repl_entrypoint at /Applications/Julia-1.7.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.7.dylib (unknown line)
Allocations: 207032348 (Pool: 206988583; Big: 43765); GC: 123
dt₀ = OrdinaryDiffEq.ArrayInterface.IfElse.ifelse((d₀ < 1//10^(5)) | (d₁ < 1//10^(5)), smalldt, convert(_tType,oneunit_tType*(d₀/d₁)/100))
looks like the line thats causing issues. The simpler examples, like README, didn't hit this line and don't cause the crash.
just confirmed that
julia> versioninfo()
Julia Version 1.7.0-rc1
Commit 9eade6195e (2021-09-12 06:45 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512)
Environment:
JULIA_NUM_THREADS = 8
does not hit the same issue
@anandijain my student and I (M1 Macs) also get a seg fault. the Pluto notebook to reproduce the seg fault is linked in my issue: https://github.com/SciML/OrdinaryDiffEq.jl/issues/1580
Please report this to https://github.com/JuliaLang/julia. https://github.com/JuliaLang/julia/blob/f835c24c737cb1d71df20f9bc63637ded8dcb669/base/intfuncs.jl#L557 segfaulting on M1 is not something we can fix from the ODE solver and has to get fixed in Julia itself.
if you have them build on master, darwin should no longer error with this, but other aarch i think will
I mentioned in the other issue that it's <
on Rational, so you'd have to play with it to get an MWE. I can't test since I don't have an M1 though.
@anandijain you are right! I just built Juila from master, for the first time ever, and now the seg fault does not occur. 👍 looks like we will need to wait for Julia 1.8 😦 . I hope they release it soon. [Keno made patch, mentioned in thread below.]
https://github.com/JuliaLang/julia/issues/42295