Skip to content

Internal error: encountered unexpected error in runtime #42579

Closed
@goerch

Description

@goerch

MRE:

function Base.iterate(::Nothing)
end

mutable struct TrieSet{K} <: AbstractSet{AbstractArray{K}}
    dict::Dict{K, TrieSet{K}}
    value::Bool
    function TrieSet{K}() where K
        new(Dict{K, TrieSet{K}}(), false)
    end
end

function walk(trie::TrieSet{K}, f, prefix=Vector{K}()) where K
    if trie.value
        f(prefix)
    end
    for (char, subtrie) in trie.dict
        walk(subtrie, f, vcat(prefix, char))
    end
end

function Base.push!(trie::TrieSet{K}, key) where K
    for char in key
        if trie.dict == nothing
            trie.dict = Dict{K, TrieSet{K}}(char => TrieSet{K}())
        elseif !haskey(trie.dict, char)
            trie.dict[char] = TrieSet{K}()
        end
        trie = trie.dict[char]
    end
    trie.value = true
end

function getsubtrie(trie::TrieSet{K}, key) where K
    prefix = Vector{K}()
    for char in key
        if trie.dict == nothing || !haskey(trie.dict, char)
            return nothing
        end
        push!(prefix, char)
        trie = trie.dict[char]
    end
    return trie, prefix
end

struct PrefixTrieSet{K} <: AbstractSet{AbstractArray{K}}
    subtrie::TrieSet{K}
    prefix::Vector{K}
    function PrefixTrieSet{K}(trie, prefix) where K
        new(getsubtrie(trie, prefix)...)
    end
end

function keys(trie::PrefixTrieSet{K}) where K
    result = Vector{Vector{K}}()
    walk(trie.subtrie, x -> push!(result, x), trie.prefix)
    return result
end

set = TrieSet{Char}()
push!(set, "a")
keys(PrefixTrieSet{Char}(set, "a"))

Trace back running the program on 1.6.3:

Internal error: encountered unexpected error in runtime:
BoundsError(a=svec(), i=0)
getindex at .\essentials.jl:589 [inlined]
unswitchtupleunion at .\compiler\typeutils.jl:219
getfield_elim_pass! at .\compiler/ssair\passes.jl:624
run_passes at .\compiler/ssair\driver.jl:133
optimize at .\compiler\optimize.jl:272 [inlined]
_typeinf at .\compiler\typeinfer.jl:244
typeinf at .\compiler\typeinfer.jl:209
typeinf_ext at .\compiler\typeinfer.jl:892
typeinf_ext_toplevel at .\compiler\typeinfer.jl:925
typeinf_ext_toplevel at .\compiler\typeinfer.jl:921
jfptr_typeinf_ext_toplevel_14355.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2237 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419 [inlined]
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_type_infer at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:298
jl_generate_fptr at /cygdrive/c/buildbot/worker/package_win64/build/src\jitlayers.cpp:340
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1970
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1924 [inlined]
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2229 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at C:\Users\Win10\source\repos\julia\reduce internal runtime error\src\problem.jl:61
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:825
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1116
_include at .\loading.jl:1170
include at .\client.jl:444
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at none:1
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
repleval at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:198
#242 at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:228
unknown function (ip: 000000005b418dd3)
with_logstate at .\logging.jl:491
with_logger at .\logging.jl:603 [inlined]
evalrepl at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:216
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:264
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
eval_user_input at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:139
repl_backend_loop at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:200
start_repl_backend at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:185
#run_repl#42 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:317
run_repl at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:305
#874 at .\client.jl:387
jfptr_YY.874_32319.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:714
#invokelatest#2 at .\essentials.jl:708 [inlined]
invokelatest at .\essentials.jl:706 [inlined]
run_main_repl at .\client.jl:372
exec_options at .\client.jl:302
_start at .\client.jl:485
jfptr__start_22917.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:560
repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:702
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:51
BaseThreadInitThunk at C:\Windows\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\Windows\SYSTEM32\ntdll.dll (unknown line)

Further observations: the program doesn't crash after the trace back. The trace back vanishes, if I remove Base.iterate(::Nothing).

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