JuliaLinearAlgebra / ArnoldiMethod.jl

The Arnoldi Method with Krylov-Schur restart, natively in Julia.

Home Page:https://julialinearalgebra.github.io/ArnoldiMethod.jl/dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Segmentation fault when asking for zero eigenvalues

jagot opened this issue · comments

By mistake I asked for zero eigenvalues (nev=0) and got a nice segmentation fault:

using ArnoldiMethod
using LinearAlgebra

N = 11
o = ones(N)
T = SymTridiagonal(-2o, o[2:end])

# partialschur(T, nev=0, which=SR()) # Works
# partialschur(T, nev=1, which=LR()) # Works
partialschur(T, nev=0, which=LR()) # Boom
signal (11): Segmentation fault: 11
in expression starting at /Users/jagot/work/projects/td-cis/time-propagation/arnoldi_bug.jl:13
getindex at ./array.jl:729 [inlined]
include_conjugate_pair at /Users/jagot/.julia/packages/ArnoldiMethod/5fDBS/src/run.jl:411 [inlined]
_partialschur at /Users/jagot/.julia/packages/ArnoldiMethod/5fDBS/src/run.jl:219
#partialschur#1 at /Users/jagot/.julia/packages/ArnoldiMethod/5fDBS/src/run.jl:103 [inlined]
#partialschur at ./none:0
unknown function (ip: 0x128481b29)
jl_fptr_trampoline at /Users/osx/buildbot/slave/package_osx64/build/src/gf.c:1864
do_call at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:323
eval_stmt_value at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:362 [inlined]
eval_body at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:759
jl_interpret_toplevel_thunk_callback at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:885
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x11b1e4c8f)
unknown function (ip: 0x5)
jl_interpret_toplevel_thunk at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:894
jl_toplevel_eval_flex at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:764
jl_parse_eval_all at /Users/osx/buildbot/slave/package_osx64/build/src/ast.c:883
jl_load at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:826 [inlined]
jl_load_ at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:833
include at ./boot.jl:326 [inlined]
include_relative at ./loading.jl:1038
include at ./sysimg.jl:29
include at ./client.jl:403
jl_fptr_trampoline at /Users/osx/buildbot/slave/package_osx64/build/src/gf.c:1864
do_call at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:323
eval_stmt_value at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:362 [inlined]
eval_body at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:759
jl_interpret_toplevel_thunk_callback at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:885
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x11c3a9bdf)
unknown function (ip: 0xffffffffffffffff)
jl_interpret_toplevel_thunk at /Users/osx/buildbot/slave/package_osx64/build/src/interpreter.c:894
jl_toplevel_eval_flex at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:764
jl_toplevel_eval at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:773 [inlined]
jl_toplevel_eval_in at /Users/osx/buildbot/slave/package_osx64/build/src/toplevel.c:793
eval at ./boot.jl:328
eval_user_input at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/REPL.jl:85
macro expansion at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/REPL.jl:117 [inlined]
#26 at ./task.jl:259
jl_apply at /Users/osx/buildbot/slave/package_osx64/build/src/./julia.h:1571 [inlined]
start_task at /Users/osx/buildbot/slave/package_osx64/build/src/task.c:572
Allocations: 13692126 (Pool: 13688883; Big: 3243); GC: 26
zsh: segmentation fault  julia

This is the line that dies: https://github.com/haampie/ArnoldiMethod.jl/blob/master/src/run.jl#L411

Maybe partialschur should throw an ArgumentError when nev<1?

#100 PR Solves this issue