Skip to content
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

type inference stackoverflow #43050

Open
maartenvd opened this issue Nov 12, 2021 · 4 comments
Open

type inference stackoverflow #43050

maartenvd opened this issue Nov 12, 2021 · 4 comments
Labels
compiler:inference Type inference kind:bug Indicates an unexpected problem or unintended behavior

Comments

@maartenvd
Copy link

An inference stackoverflow encountered rather deep in some code, so it's hard to provide a minimal example (I can post the full code if necessary, but it's really quite large). This same code errors on 1.6.x, but luckily keeps running on v1.7.0 rc2. There are a number of similar issues, but I didn't find the exact same one.

versioninfo

julia> versioninfo()
Julia Version 1.7.0-rc2
Commit f23fc0d27a (2021-10-20 12:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-12.0.1 (ORCJIT, skylake)
Environment:
  JULIA_NUM_THREADS = 2

stacktrace

Internal error: encountered unexpected error in runtime:
StackOverflowError()
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2284
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2334
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2284
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2334
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2284
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2334
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2284
intersect at /home/maarten/julia/src/subtype.c:3057
...
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2284
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2334
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
intersect_var at /home/maarten/julia/src/subtype.c:2334
intersect at /home/maarten/julia/src/subtype.c:3057
intersect_union at /home/maarten/julia/src/subtype.c:2154
intersect at /home/maarten/julia/src/subtype.c:3073
intersect_unionall_ at /home/maarten/julia/src/subtype.c:2578
intersect_unionall at /home/maarten/julia/src/subtype.c:2623
intersect at /home/maarten/julia/src/subtype.c:3106
intersect_all at /home/maarten/julia/src/subtype.c:3175
intersect_aside at /home/maarten/julia/src/subtype.c:2131
var_lt at /home/maarten/julia/src/subtype.c:623
subtype at /home/maarten/julia/src/subtype.c:1231
forall_exists_equal at /home/maarten/julia/src/subtype.c:1383
subtype at /home/maarten/julia/src/subtype.c:1306
subtype_unionall at /home/maarten/julia/src/subtype.c:807
subtype at /home/maarten/julia/src/subtype.c:1257
subtype_unionall at /home/maarten/julia/src/subtype.c:807
subtype at /home/maarten/julia/src/subtype.c:1257
exists_subtype at /home/maarten/julia/src/subtype.c:1395 [inlined]
forall_exists_subtype at /home/maarten/julia/src/subtype.c:1423
subtype_ccheck at /home/maarten/julia/src/subtype.c:555
var_lt at /home/maarten/julia/src/subtype.c:618
subtype at /home/maarten/julia/src/subtype.c:1231
exists_subtype at /home/maarten/julia/src/subtype.c:1395 [inlined]
forall_exists_subtype at /home/maarten/julia/src/subtype.c:1423
subtype_in_env_ at /home/maarten/julia/src/subtype.c:1899
subtype_bounds_in_env at /home/maarten/julia/src/subtype.c:1909 [inlined]
subtype_in_env_existential at /home/maarten/julia/src/subtype.c:2241
intersect_invariant at /home/maarten/julia/src/subtype.c:2889
intersect at /home/maarten/julia/src/subtype.c:3130
intersect_tuple at /home/maarten/julia/src/subtype.c:2770 [inlined]
intersect at /home/maarten/julia/src/subtype.c:3124
intersect_unionall_ at /home/maarten/julia/src/subtype.c:2574
intersect_unionall at /home/maarten/julia/src/subtype.c:2623
intersect at /home/maarten/julia/src/subtype.c:3109
intersect_unionall_ at /home/maarten/julia/src/subtype.c:2574
intersect_unionall at /home/maarten/julia/src/subtype.c:2623
intersect at /home/maarten/julia/src/subtype.c:3109
intersect_unionall_ at /home/maarten/julia/src/subtype.c:2578
intersect_unionall at /home/maarten/julia/src/subtype.c:2623
intersect at /home/maarten/julia/src/subtype.c:3083
intersect_all at /home/maarten/julia/src/subtype.c:3175
jl_type_intersection_env_s at /home/maarten/julia/src/subtype.c:3417
jl_type_intersection2 at /home/maarten/julia/src/gf.c:1609 [inlined]
ml_matches at /home/maarten/julia/src/gf.c:2959
jl_matching_methods at /home/maarten/julia/src/gf.c:1895
_methods_by_ftype at ./reflection.jl:908 [inlined]
#findall#246 at ./compiler/methodtable.jl:68 [inlined]
findall##kw at ./compiler/methodtable.jl:65
jfptr_findallYY.YY.kw_8814 at /home/maarten/julia/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/maarten/julia/src/gf.c:2247 [inlined]
jl_apply_generic at /home/maarten/julia/src/gf.c:2429
#249 at ./compiler/methodtable.jl:97
get! at ./iddict.jl:178 [inlined]
#findall#248 at ./compiler/methodtable.jl:96 [inlined]
findall##kw at ./compiler/methodtable.jl:95
jfptr_findallYY.YY.kw_8807 at /home/maarten/julia/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/maarten/julia/src/gf.c:2247 [inlined]
jl_apply_generic at /home/maarten/julia/src/gf.c:2429
find_matching_methods at ./compiler/abstractinterpretation.jl:308
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:39
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1897
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call at ./compiler/abstractinterpretation.jl:1372
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1897
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1897
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1879
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1897
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1897
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_edge at ./compiler/typeinfer.jl:823 [inlined]
abstract_call_method at ./compiler/abstractinterpretation.jl:504
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:105
abstract_call_known at ./compiler/abstractinterpretation.jl:1319
abstract_call at ./compiler/abstractinterpretation.jl:1374
abstract_call at ./compiler/abstractinterpretation.jl:1359
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1514
typeinf_local at ./compiler/abstractinterpretation.jl:1879
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1993
_typeinf at ./compiler/typeinfer.jl:226
typeinf at ./compiler/typeinfer.jl:209
typeinf_ext at ./compiler/typeinfer.jl:909
typeinf_ext_toplevel at ./compiler/typeinfer.jl:942
typeinf_ext_toplevel at ./compiler/typeinfer.jl:938
jfptr_typeinf_ext_toplevel_9135 at /home/maarten/julia/usr/lib/julia/sys.so (unknown line)
_jl_invoke at /home/maarten/julia/src/gf.c:2247 [inlined]
jl_apply_generic at /home/maarten/julia/src/gf.c:2429
jl_apply at /home/maarten/julia/src/julia.h:1790 [inlined]
jl_type_infer at /home/maarten/julia/src/gf.c:295
jl_generate_fptr at /home/maarten/julia/src/jitlayers.cpp:338
jl_compile_method_internal at /home/maarten/julia/src/gf.c:1980
jl_compile_method_internal at /home/maarten/julia/src/gf.c:2246 [inlined]
_jl_invoke at /home/maarten/julia/src/gf.c:2239 [inlined]
jl_apply_generic at /home/maarten/julia/src/gf.c:2429
jl_apply at /home/maarten/julia/src/julia.h:1790 [inlined]
start_task at /home/maarten/julia/src/task.c:875
@ararslan ararslan added kind:bug Indicates an unexpected problem or unintended behavior compiler:inference Type inference labels Nov 12, 2021
@JeffBezanson
Copy link
Sponsor Member

So same error in both 1.6 and 1.7, but in 1.6 it's fatal and 1.7 manages to keep going?

@maartenvd
Copy link
Author

no, on 1.6.3 it errors with the following stacktrace:

    nested task error: TypeError: in AbstractTensorMap, in S, expected S<:ElementarySpace, got Type{TensorKit.HomSpace{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, ProductSpace{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 2}, ProductSpace{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 0}}}
    Stacktrace:
       [1] subst_trivial_bounds(atypes::Any)
         @ Core.Compiler ./compiler/utilities.jl:157
       [2] subst_trivial_bounds(atypes::Any)
         @ Core.Compiler ./compiler/utilities.jl:159
       [3] normalize_typevars(method::Method, atypes::Any, sparams::Core.SimpleVector)
         @ Core.Compiler ./compiler/utilities.jl:167
       [4] specialize_method(method::Method, atypes::Any, sparams::Core.SimpleVector, preexisting::Bool, compilesig::Bool)
         @ Core.Compiler ./compiler/utilities.jl:179
       [5] specialize_method
         @ ./compiler/utilities.jl:178 [inlined]
       [6] typeinf_edge(interp::Core.Compiler.NativeInterpreter, method::Method, atypes::Any, sparams::Core.SimpleVector, caller::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:769
       [7] abstract_call_method(interp::Core.Compiler.NativeInterpreter, method::Method, sig::Any, sparams::Core.SimpleVector, hardlimit::Bool, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:490
       [8] abstract_call_gf_by_type(interp::Core.Compiler.NativeInterpreter, f::Any, argtypes::Vector{Any}, atype::Any, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:143
       [9] abstract_call_known(interp::Core.Compiler.NativeInterpreter, f::Any, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1048
      [10] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1071
      [11] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1055
      [12] abstract_eval_statement(interp::Core.Compiler.NativeInterpreter, e::Any, vtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1182
      [13] typeinf_local(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1470
      [14] typeinf_nocycle(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1534
      [15] _typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:214
      [16] typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:209
      [17] typeinf_edge(interp::Core.Compiler.NativeInterpreter, method::Method, atypes::Any, sparams::Core.SimpleVector, caller::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:806
    --- the last 11 lines are repeated 2 more times ---
      [40] abstract_call_method(interp::Core.Compiler.NativeInterpreter, method::Method, sig::Any, sparams::Core.SimpleVector, hardlimit::Bool, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:490
      [41] abstract_call_gf_by_type(interp::Core.Compiler.NativeInterpreter, f::Any, argtypes::Vector{Any}, atype::Any, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:143
      [42] abstract_call_known(interp::Core.Compiler.NativeInterpreter, f::Any, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1048
      [43] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1071
      [44] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1055
      [45] abstract_eval_statement(interp::Core.Compiler.NativeInterpreter, e::Any, vtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1182
      [46] typeinf_local(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1455
      [47] typeinf_nocycle(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1534
      [48] _typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:214
      [49] typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:209
      [50] typeinf_edge(interp::Core.Compiler.NativeInterpreter, method::Method, atypes::Any, sparams::Core.SimpleVector, caller::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:806
      [51] abstract_call_method(interp::Core.Compiler.NativeInterpreter, method::Method, sig::Any, sparams::Core.SimpleVector, hardlimit::Bool, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:490
      [52] abstract_call_gf_by_type(interp::Core.Compiler.NativeInterpreter, f::Any, argtypes::Vector{Any}, atype::Any, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:143
      [53] abstract_call_known(interp::Core.Compiler.NativeInterpreter, f::Any, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1048
      [54] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1071
      [55] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1055
      [56] abstract_eval_statement(interp::Core.Compiler.NativeInterpreter, e::Any, vtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1182
      [57] typeinf_local(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1470
    --- the last 11 lines are repeated 1 more time ---
      [69] typeinf_nocycle(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1534
      [70] _typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:214
      [71] typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:209
      [72] typeinf_edge(interp::Core.Compiler.NativeInterpreter, method::Method, atypes::Any, sparams::Core.SimpleVector, caller::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:806
      [73] abstract_call_method(interp::Core.Compiler.NativeInterpreter, method::Method, sig::Any, sparams::Core.SimpleVector, hardlimit::Bool, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:490
      [74] abstract_call_gf_by_type(interp::Core.Compiler.NativeInterpreter, f::Any, argtypes::Vector{Any}, atype::Any, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:143
      [75] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState, max_methods::Int64)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1069
      [76] abstract_call(interp::Core.Compiler.NativeInterpreter, fargs::Vector{Any}, argtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1055
      [77] abstract_eval_statement(interp::Core.Compiler.NativeInterpreter, e::Any, vtypes::Vector{Any}, sv::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1182
      [78] typeinf_local(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1470
    --- the last 10 lines are repeated 1 more time ---
      [89] typeinf_nocycle(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/abstractinterpretation.jl:1534
      [90] _typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:214
      [91] typeinf(interp::Core.Compiler.NativeInterpreter, frame::Core.Compiler.InferenceState)
         @ Core.Compiler ./compiler/typeinfer.jl:209
      [92] typeinf
         @ ./compiler/typeinfer.jl:8 [inlined]
      [93] typeinf_type(interp::Core.Compiler.NativeInterpreter, method::Method, atypes::Any, sparams::Core.SimpleVector)
         @ Core.Compiler ./compiler/typeinfer.jl:914
      [94] return_type(interp::Core.Compiler.NativeInterpreter, f::Any, t::Any)
         @ Core.Compiler ./compiler/typeinfer.jl:963
      [95] return_type(f::Any, t::Any, world::UInt64)
         @ Core.Compiler ./compiler/typeinfer.jl:950
      [96] return_type(f::Any, t::Any)
         @ Core.Compiler ./compiler/typeinfer.jl:947
      [97] eigsolve(f::Function, x₀::MPSKit.LeftGaugedQP{InfiniteMPS{TensorMap{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 2, 1, SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Matrix{ComplexF64}}, FusionTree{SU2Irrep, 2, 0, 1, Nothing}, FusionTree{SU2Irrep, 1, 0, 0, Nothing}}, TensorMap{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 1, 1, SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Matrix{ComplexF64}}, FusionTree{SU2Irrep, 1, 0, 0, Nothing}, FusionTree{SU2Irrep, 1, 0, 0, Nothing}}}, TensorKit.AdjointTensorMap{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 2, 1, SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Matrix{ComplexF64}}, FusionTree{SU2Irrep, 2, 0, 1, Nothing}, FusionTree{SU2Irrep, 1, 0, 0, Nothing}}, TensorMap{GradedSpace{SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Int64}}, 1, 2, SU2Irrep, TensorKit.SortedVectorDict{SU2Irrep, Matrix{ComplexF64}}, FusionTree{SU2Irrep, 1, 0, 0, Nothing}, FusionTree{SU2Irrep, 2, 0, 1, Nothing}}}, howmany::Int64, which::Symbol; kwargs::Base.Iterators.Pairs{Symbol, Real, Tuple{Symbol, Symbol}, NamedTuple{(:tol, :krylovdim), Tuple{Float64, Int64}}})
         @ KrylovKit ~/KrylovKit.jl/src/eigsolve/eigsolve.jl:152
      [98] excitations(H::Any, alg::QuasiparticleAnsatz, V₀::Union{MPSKit.LeftGaugedQP{S, T1, T2}, MPSKit.RightGaugedQP{S, T1, T2}} where {T1, T2, S<:InfiniteMPS}, lenvs::Any, renvs::Any; num::Any, solver::Any)
         @ MPSKit ~/MPSKit.jl/src/algorithms/excitation/quasiparticleexcitation.jl:44
      [99] excitations(H::Any, alg::QuasiparticleAnsatz, p::Real, lmps::InfiniteMPS, lenvs::Any, rmps::InfiniteMPS, renvs::Any; sector::Any, num::Any, solver::Any)
         @ MPSKit ~/MPSKit.jl/src/algorithms/excitation/quasiparticleexcitation.jl:83
     [100] macro expansion
         @ ~/momentumwindow_chenanigans/properscatter2/main.jl:35 [inlined]

@judober
Copy link

judober commented Dec 10, 2021

@maartenvd do you think your error is related to #43357?

@ghjwp7
Copy link

ghjwp7 commented May 11, 2022

In reply #5 at stack-overflow-in-type-inference-julia-1-9-0-dev I put some code called toverflow5.jl that gets errors similar to above when run in 1.7.2 julia, running for about 12 minutes and printing probably between half a million and a million error messages before producing expected output. [Actually, less than 115000 error messages. See Stack overflow in type inference… julia 1.9.0-DEV #45286 for marginally smaller program.] When run in Julia Version 1.9.0-DEV.485 it gives half a dozen "Internal error: stack overflow in type inference of ..." errors and otherwise expected output, taking ca. 10 seconds. The one-character-different toverflow3.jl runs ok in 1.7.2 and 1.9.0-DEV, taking about 2 seconds each time. [The different character is > vs <, in an if statement that uses one long printfmt argument list in the error case, and two printfmts in the non-error case, producing the same output either way.]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:inference Type inference kind:bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

5 participants