JuliaStats / Distributions.jl

A Julia package for probability distributions and associated functions.
Other
1.1k stars 413 forks source link

`MvNormal(::Vector{Real}, ...)` crashes Julia #1260

Open yha opened 3 years ago

yha commented 3 years ago

Example:

julia> using Distributions

julia> MvNormal(Real[1,0], [1 0; 0 1])
# Julia crashes

Distributions is at version 0.24.10

julia> versioninfo()
Julia Version 1.5.2
Commit 539f3ce943 (2020-09-23 23:17 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-9800X CPU @ 3.80GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512)
andreasnoack commented 3 years ago

It's a stack overflow which Windows Julia often isn't handling well

julia> MvNormal(Real[1,0], [1 0; 0 1])
ERROR: StackOverflowError:
Stacktrace:
 [1] potrf! at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/lapack.jl:3060 [inlined]
 [2] _chol! at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/cholesky.jl:144 [inlined]
 [3] cholesky!(::LinearAlgebra.Hermitian{Float64,Array{Float64,2}}, ::Val{false}; check::Bool) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/cholesky.jl:218
 [4] cholesky!(::Array{Float64,2}, ::Val{false}; check::Bool) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/cholesky.jl:251
 [5] #cholesky#130 at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/cholesky.jl:344 [inlined]
 [6] cholesky at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/cholesky.jl:344 [inlined] (repeats 2 times)
 [7] PDMat at /Users/andreasnoack/.julia/packages/PDMats/G0Prn/src/pdmat.jl:19 [inlined]
 [8] convert(::Type{PDMats.PDMat{Real,S} where S<:(AbstractArray{T,2} where T)}, ::PDMats.PDMat{Float64,Array{Float64,2}}) at /Users/andreasnoack/.julia/packages/PDMats/G0Prn/src/pdmat.jl:24
 [9] convert at /Users/andreasnoack/.julia/packages/PDMats/G0Prn/src/pdmat.jl:25 [inlined]
 [10] MvNormal(::Array{Real,1}, ::PDMats.PDMat{Float64,Array{Float64,2}}) at /Users/andreasnoack/.julia/dev/Distributions/src/multivariate/mvnormal.jl:202 (repeats 52346 times)
 [11] MvNormal(::Array{Real,1}, ::Array{Int64,2}) at /Users/andreasnoack/.julia/dev/Distributions/src/multivariate/mvnormal.jl:211
 [12] top-level scope at REPL[4]:1