Skip to content

Internal error from a BoundsError #960

@EdAyers

Description

@EdAyers

I was having a go at implementing an NN for representing images as a xy→rgb (eg see https://bmild.github.io/fourfeat/) in Julia using Flux. But I encountered an internal error in Julia and my understanding is that this is always a bug.

Versions:

  • Julia Version 1.6.0 (2021-03-24)
[deps]
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
ColorTypes = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
ColorVectorSpace = "c3611d14-8923-5661-9e6a-0046d554d3a4"
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
ImageDraw = "4381153b-2b60-58ae-a1ba-fd683676385f"
ImageShow = "4e3cecfd-b093-5904-9786-8bbb286a6a31"
Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"

Reproduction code:

using ImageShow, ColorVectorSpace, ColorTypes, Flux, StaticArrays

(H,W) = (100, 200)
width = 256

col(x) = ColorTypes.RGB(x...)

model = (Chain(
		Dense(2, width, relu),
		Dense(width, width, relu),
		Dense(width, width, relu),
		Dense(width, 3, sigmoid),
	))

ι = ([SA[i, j] for i=range(0.0, 1.0, length=H), j=range(0.0, 1.0, length=W)])

imtrue(x,y) = SA[cos(x*2) ^ 2, 0, cos(x + y) ^ 2]

im3 = [imtrue(x,y) for x=range(0.0, 1.0, length=H), y=range(0.0, 1.0, length=W)]

data = [(ι, im3)]

function loss(xy, rgb)
	sum(norm.(model.(xy) .- rgb))
end

println(loss(ι, im3))

opt = Descent(0.01)
Flux.train!(loss, Flux.params(model), data, opt)

@show col.(model.(ι))

Expected output: it trains the network. I am not using cu for CUDA explicitly so my understanding is that all of the above happens on the CPU.

Output:

Internal error: encountered unexpected error in runtime:
BoundsError(a=Array{Any, (2,)}[
  Core.Compiler.VarState(typ=Zygote.Pullback{Tuple{typeof(StaticArrays._norm), StaticArrays.Size{(3,)}, StaticArrays.SArray{Tuple{3}, Float64, 1, 3}}, Any}, undef=false),
  Core.Compiler.VarState(typ=Float64, undef=false)], i=(3,))
jl_bounds_error_ints at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
unknown function (ip: 0x7fdfea5605bd)
unknown function (ip: 0x7fdfea55d038)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea55163b)
unknown function (ip: 0x7fdfea51880f)
unknown function (ip: 0x7fdfea27c3f0)
unknown function (ip: 0x7fdfea549347)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea55163b)
unknown function (ip: 0x7fdfea51880f)
unknown function (ip: 0x7fdfea5189b2)
unknown function (ip: 0x7fdfea540127)
unknown function (ip: 0x7fdfea549827)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea549bf6)
unknown function (ip: 0x7fdfea546a31)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55de61)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea51effd)
unknown function (ip: 0x7fdfea51df88)
unknown function (ip: 0x7fdfea51b795)
unknown function (ip: 0x7fdfea546b0c)
unknown function (ip: 0x7fdfea54634f)
unknown function (ip: 0x7fdfea544795)
unknown function (ip: 0x7fdfea55cdb5)
unknown function (ip: 0x7fdfea559422)
unknown function (ip: 0x7fdfea558603)
unknown function (ip: 0x7fdfea55709a)
unknown function (ip: 0x7fdfea513c35)
unknown function (ip: 0x7fdfea512cfb)
unknown function (ip: 0x7fdfea289594)
unknown function (ip: 0x7fdfea2895cf)
unknown function (ip: 0x7fdffb5bcf8d)
unknown function (ip: 0x7fdffb642b70)
unknown function (ip: 0x7fdffb5bb8df)
jl_apply_generic at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
gradient at /home/edward/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:59
unknown function (ip: 0x7fdf5548d2fe)
macro expansion at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:101 [inlined]
macro expansion at /home/edward/.julia/packages/Juno/n6wyj/src/progress.jl:134 [inlined]
#train!#36 at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:99
train! at /home/edward/.julia/packages/Flux/6BByF/src/optimise/train.jl:97
unknown function (ip: 0x7fdf5548c381)
unknown function (ip: 0x7fdffb5d52c5)
unknown function (ip: 0x7fdffb5d4e85)
unknown function (ip: 0x7fdffb5d5a80)
unknown function (ip: 0x7fdffb5d6580)
top-level scope at /home/edward/Nerf.jl/train.jl:28
unknown function (ip: 0x7fdffb5f1777)
unknown function (ip: 0x7fdffb5f2407)
jl_toplevel_eval_in at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
unknown function (ip: 0x7fdfea583877)
unknown function (ip: 0x7fdfea48090b)
unknown function (ip: 0x7fdfea480372)
unknown function (ip: 0x7fdfea21bdc9)
unknown function (ip: 0x7fdfea2207dc)
unknown function (ip: 0x7fdfea220945)
unknown function (ip: 0x7fdffb6148de)
repl_entrypoint at /usr/bin/../lib/julia/libjulia-internal.so.1 (unknown line)
main at julia (unknown line)
__libc_start_main at /usr/bin/../lib/libc.so.6 (unknown line)
_start at julia (unknown line)
ERROR: LoadError: BoundsError: attempt to access 2-element Vector{Any} at index [3]
Stacktrace:
  [1] return_type(interp::Core.Compiler.NativeInterpreter, f::Any, t::Any)
    @ Core.Compiler ./compiler/typeinfer.jl:963
  [2] return_type(f::Any, t::Any, world::UInt64)
    @ Core.Compiler ./compiler/typeinfer.jl:950
  [3] return_type(f::Any, t::Any)
    @ Core.Compiler ./compiler/typeinfer.jl:947
  [4] collect(itr::Base.Generator)
    @ Base ./array.jl:652
  [5] map(::Function, ::Matrix{typeof(∂(norm))}, ::FillArrays.Fill{Float64, 2, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}})
    @ Base ./abstractarray.jl:2383
  [6] (::Zygote.var"#1077#1084")(ȳ::Any)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/broadcast.jl:164
  [7] (::Zygote.var"#3902#back#1088")(Δ::Any)
    @ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
  [8] (::Zygote.var"#180#181")(Δ::Any)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/lib.jl:194
  [9] (::Zygote.var"#1689#back#182")(Δ::Any)
    @ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
 [10] Pullback
    @ ./broadcast.jl:1309 [inlined]
 [11] (::typeof(∂(broadcasted)))(Δ::FillArrays.Fill{Float64, 2, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}})
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
 [12] Pullback
    @ ~/Nerf.jl/train.jl:24 [inlined]
 [13] (::typeof(∂(loss)))(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
 [14] (::Zygote.var"#180#181")(Δ::Any)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/lib/lib.jl:194
 [15] (::Zygote.var"#1689#back#182")(Δ::Any)
    @ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
 [16] Pullback
    @ ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:102 [inlined]
 [17] (::typeof(∂(λ)))(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface2.jl:0
 [18] (::Zygote.var"#69#70")(Δ::Any)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:252
 [19] gradient(f::Function, args::Zygote.Params)
    @ Zygote ~/.julia/packages/Zygote/6HN9x/src/compiler/interface.jl:59
 [20] macro expansion
    @ ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:101 [inlined]
 [21] macro expansion
    @ ~/.julia/packages/Juno/n6wyj/src/progress.jl:134 [inlined]
 [22] train!(loss::Function, ps::Zygote.Params, data::Vector{Tuple{Matrix{SVector{2, Float64}}, Matrix{SVector{3, Float64}}}}, opt::Descent; cb::Flux.Optimise.var"#40#46")
    @ Flux.Optimise ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:99
 [23] train!(loss::Function, ps::Zygote.Params, data::Vector{Tuple{Matrix{SVector{2, Float64}}, Matrix{SVector{3, Float64}}}}, opt::Descent)
    @ Flux.Optimise ~/.julia/packages/Flux/6BByF/src/optimise/train.jl:97
 [24] top-level scope
    @ ~/Nerf.jl/train.jl:28
in expression starting at /home/edward/Nerf.jl/train.jl:28

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions