-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
0.4: segfault in jl_method_table_assoc_exact #13510
Comments
the code_typed results appear to be consistent with this being a duplicate of #9770 obligatory screen dump follows: (lldb) p jl_(jl_eval_string("code_typed(ApproxFun.maxspace, (ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}} ))"))
Array{Any, 1}[Expr(:lambda, Array{Any, 1}[:a, :b], Array{Any, 1}[Array{Any, 1}[Array{Any, 1}[:a, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, 0], Array{Any, 1}[:b, ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, 0], Array{Any, 1}[:cr, Any, 2], Array{Any, 1}[:cspa, Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, 18], Array{Any, 1}[:#s75, Any, 2], Array{Any, 1}[:cspb, ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, 18], Array{Any, 1}[:#s74, Bool, 2], Array{Any, 1}[:##xs#9184, Tuple{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}}, 0], Array{Any, 1}[:##xs#9185, Tuple{ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, 0], Array{Any, 1}[:##xs#9186, Tuple{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}}, 0], Array{Any, 1}[:##xs#9187, Tuple{ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, 0]], Array{Any, 1}[], Array{Any, 1}[ApproxFun.Interval{Float64}, Bool], Array{Any, 1}[]], Expr(:body,
# line 225 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
<newvar :cr>,
<newvar :cspa>,
<newvar :#s75>,
<newvar :cspb>,
<newvar :#s74>,
Expr(:gotoifnot, Expr(:call, ApproxFun.spacescompatible, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, Expr(:call, :call, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, Expr(:call, Base.box, Float64, Expr(:call, Base.sitofp, Float64, 0)::Any)::Float64, Expr(:call, Base.box, Float64, Expr(:call, Base.sitofp, Float64, 0)::Any)::Float64, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Bool, 0)::Any,
# line 226 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Any,
0:,
# line 229 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
:cr = Expr(:call, ApproxFun.maxspace_rule, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Union{},
# line 230 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.!=, cr::Union{}, Expr(:new, Expr(:call, top(:getfield), ApproxFun, :NoSpace)::Type{ApproxFun.NoSpace})::ApproxFun.NoSpace)::Union{}, 1)::Any,
# line 231 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, cr::Union{})::Any,
1:,
# line 234 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
:cr = Expr(:call, ApproxFun.maxspace_rule, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace},
# line 235 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.!=, cr::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace}, Expr(:new, Expr(:call, top(:getfield), ApproxFun, :NoSpace)::Type{ApproxFun.NoSpace})::ApproxFun.NoSpace)::Bool, 2)::Any,
# line 236 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, cr::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace})::Any,
2:,
# line 239 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
:cr = Expr(:call, ApproxFun.conversion_type, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Any,
# line 240 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.==, :cr, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Any, 3)::Any,
# line 241 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Any,
goto 4,
3:,
# line 242 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.==, :cr, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Any, 4)::Any,
# line 243 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Any,
4:,
# line 247 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
:cspa = Expr(:call, ApproxFun.canonicalspace, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}},
# line 248 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.spacescompatible, cspa::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Bool, 5)::Any,
# line 251 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:call, ApproxFun.error, Expr(:call, ApproxFun.*, "Override conversion_type or maxspace for ", Expr(:call, Base.print_to_string, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Union{UTF8String, ASCIIString}, " and ", Expr(:call, Base.print_to_string, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Union{UTF8String, ASCIIString})::Union{UTF8String, ASCIIString})::Union{},
5:,
# line 253 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.!=, cspa::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Bool, 6)::Any,
:#s75 = Expr(:call, ApproxFun.==, Expr(:call, ApproxFun.maxspace, cspa::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}}, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Any, cspa::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}})::Any,
goto 7,
6:,
:#s75 = false,
7:,
Expr(:gotoifnot, :#s75, 8)::Any,
# line 254 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, Expr(:call, ApproxFun.maxspace, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, cspa::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}})::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace})::Any,
8:,
# line 257 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
GenSym(0) = Expr(:call, top(:getfield), b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, :domain)::ApproxFun.Interval{Float64},
:cspb = Expr(:new, ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, Expr(:new, ApproxFun.Interval{Float64}, Expr(:call, top(:getfield), GenSym(0), :a)::Float64, Expr(:call, top(:getfield), GenSym(0), :b)::Float64)::ApproxFun.Interval{Float64})::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}},
# line 258 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:gotoifnot, Expr(:call, ApproxFun.spacescompatible, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, Expr(:call, :call, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, Expr(:call, Base.box, Float64, Expr(:call, Base.sitofp, Float64, 0)::Any)::Float64, Expr(:call, Base.box, Float64, Expr(:call, Base.sitofp, Float64, 0)::Any)::Float64, cspb::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Bool, 9)::Any,
# line 260 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:call, ApproxFun.error, Expr(:call, ApproxFun.*, "Override conversion_type or maxspace for ", Expr(:call, Base.print_to_string, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}})::Union{UTF8String, ASCIIString}, " and ", Expr(:call, Base.print_to_string, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Union{UTF8String, ASCIIString})::Union{UTF8String, ASCIIString})::Union{},
9:,
# line 262 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
GenSym(1) = Expr(:call, Base.==, cspb::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Bool,
Expr(:gotoifnot, Expr(:call, Base.box, Base.Bool, Expr(:call, Base.not_int, GenSym(1))::Any)::Bool, 10)::Any,
:#s74 = Expr(:call, ApproxFun.==, Expr(:call, ApproxFun.maxspace, cspb::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, b::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Union{ApproxFun.NoSpace, ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}}, cspb::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Bool,
goto 11,
10:,
:#s74 = false,
11:,
Expr(:gotoifnot, #s74::Bool, 12)::Any,
# line 263 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, Expr(:call, ApproxFun.maxspace, a::ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}, cspb::ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}})::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}})::Any,
12:,
# line 266 /Users/jameson/.julia/v0.5/ApproxFun/src/Fun/Space.jl,
Expr(:return, Expr(:new, Expr(:call, top(:getfield), ApproxFun, :NoSpace)::Type{ApproxFun.NoSpace})::ApproxFun.NoSpace)::Any)::Union{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.NoSpace, ApproxFun.JacobiWeight{ApproxFun.Ultraspherical{0, ApproxFun.Interval{Float64}}, ApproxFun.Interval{Float64}}})::Any] |
I can still reproduce this on |
yes, see PR #9926 for the probable fix |
I also was hit by this bug again in 0.4.2, but managed to work around it by redesigning the code. Though having to redesigning code around an obscure and slightly inconsistent bug is not exactly fun. Looking forward to PR #9926! |
confirmed fixed on master |
The following consistently causes a segfault in 0.4 final release (as well as 0.4-rc1), and the same line of gf.c. I created a branch of ApproxFun that shows the bug. Note that the
--check-bounds=yes
appears necessary to reproduce.The text was updated successfully, but these errors were encountered: