JuliaSmoothOptimizers / JuliaSmoothOptimizers/HSL.jl
Segfault with `ma57_solve`
- Dominant language
- Julia
- Stars
- 47
- Forks
- 19
- PR merge metrics
- No merged PRs in 30d
Description
I tried to solve some sparse systems with `ma57_solve`, but occasionally, it segfaults. If I execute a simple file with
```julia
using HSL
using SparseArrays
using LinearAlgebra
n = 500
A = sparse(1.0*I, n, n)
b = randn(n)
ma57_solve(A, b)
```
it spits out
```
[19270] signal (11.1): Segmentation fault
in expression starting at /tmp/test.jl:8
ma57xd_ at /opt/HSL_jll.jl/HSL_jll.jl-2023.11.7/override/lib/x86_64-linux-gnu-libgfortran5/libhsl.so (unknown line)
ma57cd_ at /opt/HSL_jll.jl/HSL_jll.jl-2023.11.7/override/lib/x86_64-linux-gnu-libgfortran5/libhsl.so (unknown line)
ma57cd at /home/wachsmut/.julia/packages/HSL/YVjOf/src/Fortran/ma57.jl:19
#ma57_solve!#22 at /home/wachsmut/.julia/packages/HSL/YVjOf/src/hsl_ma57.jl:463
ma57_solve! at /home/wachsmut/.julia/packages/HSL/YVjOf/src/hsl_ma57.jl:456 [inlined]
#ma57_solve#20 at /home/wachsmut/.julia/packages/HSL/YVjOf/src/hsl_ma57.jl:429 [inlined]
ma57_solve at /home/wachsmut/.julia/packages/HSL/YVjOf/src/hsl_ma57.jl:427 [inlined]
ma57_solve at /home/wachsmut/.julia/packages/HSL/YVjOf/src/hsl_ma57.jl:628
unknown function (ip: 0x7f441c110376)
_jl_invoke at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/julia.h:1880 [inlined]
do_call at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_toplevel_eval_flex at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
include_string at ./loading.jl:1903
_jl_invoke at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2940
_include at ./loading.jl:1963
include at ./Base.jl:457
jfptr_include_35036.clone_1 at /opt/julia-1.9.3/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2940
exec_options at ./client.jl:307
_start at ./client.jl:522
jfptr__start_40034.clone_1 at /opt/julia-1.9.3/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/julia.h:1880 [inlined]
true_main at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/jlapi.c:573
jl_repl_entrypoint at /cache/build/default-amdci5-5/julialang/julia-release-1-dot-9/src/jlapi.c:717
main at julia (unknown line)
unknown function (ip: 0x7f443387ad8f)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8)
Allocations: 1960640 (Pool: 1958804; Big: 1836); GC: 3
Segmentation fault (core dumped)
```
Contributor guide
Research direction
Reproduce the supplied Julia example and start with the ma57_solve call path in src/hsl_ma57.jl, then inspect the Fortran wrapper at src/Fortran/ma57.jl:19. Trace the failing invocation reported in the stack trace; done means the example completes without a segmentation fault.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100