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

REPL becomes unresponsive during completion inference #52763

Closed
Liozou opened this issue Jan 5, 2024 · 4 comments · Fixed by #52836
Closed

REPL becomes unresponsive during completion inference #52763

Liozou opened this issue Jan 5, 2024 · 4 comments · Fixed by #52836
Labels
bug Indicates an unexpected problem or unintended behavior compiler:inference Type inference REPL Julia's REPL (Read Eval Print Loop)

Comments

@Liozou
Copy link
Member

Liozou commented Jan 5, 2024

On master, typing the following makes the REPL completely unresponsive with 100% CPU usage for more than an hour:

julia> import Clapeyron

julia> Clapeyron.isstable(Clapeyron.GERG2008(["carbon dioxide"]),

(the last comma must be typed, not copy-pasted, or you have to type something after the comma in order to kick completion into action)

It does not respond to Ctrl+C either, but does print a stacktrace when sending a SIGUSR1:

SIGUSR1 stacktrace from julia-debug (first example)
signal (10): User defined signal 1
- at ./int.jl:86 [inlined]
iterate at ./array.jl:884 [inlined]
cache_lookup at ./compiler/inferenceresult.jl:235
const_prop_call at ./compiler/abstractinterpretation.jl:1229
abstract_call_method_with_const_args at ./compiler/abstractinterpretation.jl:852
abstract_call_method_with_const_args at ./compiler/abstractinterpretation.jl:818
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:111
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_unknown at ./compiler/abstractinterpretation.jl:2237
abstract_call at ./compiler/abstractinterpretation.jl:2247
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
const_prop_call at ./compiler/abstractinterpretation.jl:1244
abstract_call_method_with_const_args at ./compiler/abstractinterpretation.jl:852
abstract_call_method_with_const_args at ./compiler/abstractinterpretation.jl:818
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:111
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
jfptr_typeinf_12881 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
jl_f__call_in_world at /LionelSSDext4/liozou/julia/src/builtins.c:894
#invoke_in_world#3 at ./essentials.jl:989 [inlined]
invoke_in_world at ./essentials.jl:986 [inlined]
#repl_eval_ex#28 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:681
repl_eval_ex at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:650 [inlined]
detect_args_kwargs at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:807
complete_methods_args at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:827 [inlined]
_complete_methods at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:707
complete_methods at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:712 [inlined]
completions at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:1259
complete_line at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:560
unknown function (ip: 0x7f3cf2927118)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2921
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
check_for_hint at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:384
#139 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2501
jl_fptr_args at /LionelSSDext4/liozou/julia/src/gf.c:2563
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
jl_f__call_latest at /LionelSSDext4/liozou/julia/src/builtins.c:875
#invokelatest#2 at ./essentials.jl:955 [inlined]
invokelatest at ./essentials.jl:952 [inlined]
#27 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:1685
jfptr_YY.27_10394 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
prompt! at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2822
run_interface at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2724
jfptr_run_interface_10910 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
run_frontend at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:1352
#64 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:401
jfptr_YY.64_12224 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
start_task at /LionelSSDext4/liozou/julia/src/task.c:1306
SIGUSR1 stacktrace from julia-debug (example 2)
signal (10): User defined signal 1
jl_exprn at /LionelSSDext4/liozou/julia/src/builtins.c:1477
jl_decode_value_expr at /LionelSSDext4/liozou/julia/src/ircode.c:579
jl_decode_value at /LionelSSDext4/liozou/julia/src/ircode.c:711
jl_decode_value_memory at /LionelSSDext4/liozou/julia/src/ircode.c:500
jl_decode_value_array at /LionelSSDext4/liozou/julia/src/ircode.c:550
jl_decode_value at /LionelSSDext4/liozou/julia/src/ircode.c:704
ijl_uncompress_ir at /LionelSSDext4/liozou/julia/src/ircode.c:944
_uncompressed_ir at ./reflection.jl:1311 [inlined]
retrieve_code_info at ./compiler/utilities.jl:143 [inlined]
InferenceState at ./compiler/inferencestate.jl:480
typeinf_edge at ./compiler/typeinfer.jl:860
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_unknown at ./compiler/abstractinterpretation.jl:2237
abstract_call at ./compiler/abstractinterpretation.jl:2247
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3011
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
typeinf_edge at ./compiler/typeinfer.jl:870
abstract_call_method at ./compiler/abstractinterpretation.jl:654
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2168
abstract_call at ./compiler/abstractinterpretation.jl:2250
abstract_call at ./compiler/abstractinterpretation.jl:2243
abstract_call at ./compiler/abstractinterpretation.jl:2388
abstract_eval_call at ./compiler/abstractinterpretation.jl:2403
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2419
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2724
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3035
typeinf_local at ./compiler/abstractinterpretation.jl:3289
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3365
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:219
jfptr_typeinf_12881 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
jl_f__call_in_world at /LionelSSDext4/liozou/julia/src/builtins.c:894
#invoke_in_world#3 at ./essentials.jl:989 [inlined]
invoke_in_world at ./essentials.jl:986 [inlined]
#repl_eval_ex#28 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:681
repl_eval_ex at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:650 [inlined]
detect_args_kwargs at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:807
complete_methods_args at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:827 [inlined]
_complete_methods at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:707
complete_methods at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:712 [inlined]
completions at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPLCompletions.jl:1259
complete_line at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:560
unknown function (ip: 0x7f3cf2927118)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2921
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
check_for_hint at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:384
#139 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2501
jl_fptr_args at /LionelSSDext4/liozou/julia/src/gf.c:2563
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
jl_f__call_latest at /LionelSSDext4/liozou/julia/src/builtins.c:875
#invokelatest#2 at ./essentials.jl:955 [inlined]
invokelatest at ./essentials.jl:952 [inlined]
#27 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:1685
jfptr_YY.27_10394 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
prompt! at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2822
run_interface at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/LineEdit.jl:2724
jfptr_run_interface_10910 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
run_frontend at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:1352
#64 at /LionelSSDext4/liozou/julia/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:401
jfptr_YY.64_12224 at /LionelSSDext4/liozou/julia/usr/share/julia/compiled/v1.11/REPL/u0gqU_e5kOS.so (unknown line)
_jl_invoke at /LionelSSDext4/liozou/julia/src/gf.c:2902
ijl_apply_generic at /LionelSSDext4/liozou/julia/src/gf.c:3098
jl_apply at /LionelSSDext4/liozou/julia/src/julia.h:2152
start_task at /LionelSSDext4/liozou/julia/src/task.c:1306
unknown function (ip: (nil))

Two comparison points:

  • on 1.10.0, this freezes for a few seconds only (after hitting TAB to force completion inference).
  • precomputing the Clapeyron.GERG2008(["carbon dioxide"]) object first removes the issue:
    julia> import Clapeyron
    
    julia> model = Clapeyron.GERG2008(["carbon dioxide"]);
    
    julia> Clapeyron.isstable(model, # REPL is still responsive

To avoid REPL freezes due to inference in general, a speculative solution could be to launch REPL completion inference from a separate (non-interactive) dedicated thread, and make it easily interruptible from a signal without killing the REPL? At least we'll need a way to interrupt inference without crashing the session if it's stuck.

For this particular issue though, I would assume there is an inference heuristic incorrectly set for REPL completion because actually executing the following code (by copy-pasting it into the REPL, or from a file) takes less than a minute to compile and execute:

julia> Clapeyron.isstable(Clapeyron.GERG2008(["carbon dioxide"]), 1e3, 300, 1)
true
versioninfo and Clapeyron version
julia> versioninfo()
Julia Version 1.11.0-DEV.1203
Commit 2816a3f0f7 (2024-01-05 14:14 UTC)
Build Info:
  DEBUG build
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 8 × Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
  WORD_SIZE: 64
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)

(v1.11) pkg> status Clapeyron
Status `/LionelSSDext4/liozou/.julia/environments/v1.11/Project.toml`
  [7c7805af] Clapeyron v0.5.9
@Liozou Liozou added REPL Julia's REPL (Read Eval Print Loop) compiler:inference Type inference labels Jan 5, 2024
@DilumAluthge DilumAluthge added the bug Indicates an unexpected problem or unintended behavior label Jan 5, 2024
@ViralBShah
Copy link
Member

Dup of #52765?

@topolarity
Copy link
Member

Dup of #52765?

I don't think so - Looks like a similar kind of issue to what @aviatesk fixed up in #52186 (comment)

That PR fixed this up for array operations, but we still seem to have bad hangs when inferring through larger packages.

aviatesk added a commit that referenced this issue Jan 10, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 10, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 10, 2024
REPL utilizes inference for smarter completions, but since its inference
engine is independent from the native cache and issues like #52763 in
`REPLInterpreter`'s inference, sometimes delays can be noticeable during
tab/hint-completion, and REPL can even freeze in the worst cases.

To address this, the commit allows tab/hint-completion to run
asynchronously on a `:default` thread. This approach removes delays in
multi-threaded process and prevents REPL hang in extreme cases like #52763.
In detail, for tab-completion, completion task simply runs on a separate
thread since completion itself does not block anything. For
hint-completion however, considering that a stuttering display of hints
can be bothersome, when the completion task doesn't conclude within
0.01 sec, we cancel the hint-completion to keep the input in the REPL
smooth.

There are still some points left open for discussion:
- Is it better to allocate a separate thread specifically for REPL
  completion? I'm not sure if this is even possible though.
- Should we make this an optional feature, considering the concern some
  users might have about reduced thread resources?
- For situations where completion hangs or is slow, like in #52763,
  canceling the completion task to release resources would be ideal.
  However, my understanding is that there's no safe method to cancel a
  task, is it correct?
- At present, this commit `Threads.@spawn`s at a relatively high level
  in the completion pipeline. But it might be more effective to
  `Threads.@spawn` closer to the point where inference is actually
  invoked, such as in `complete_line` or `repl_eval_ex`.
aviatesk added a commit that referenced this issue Jan 11, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 11, 2024
REPL utilizes inference for smarter completions, but since its inference
engine is independent from the native cache and issues like #52763 in
`REPLInterpreter`'s inference, sometimes delays can be noticeable during
tab/hint-completion, and REPL can even freeze in the worst cases.

To address this, the commit allows tab/hint-completion to run
asynchronously on a `:default` thread. This approach removes delays in
multi-threaded process and prevents REPL hang in extreme cases like #52763.
In detail, for tab-completion, completion task simply runs on a separate
thread since completion itself does not block anything. For
hint-completion however, considering that a stuttering display of hints
can be bothersome, when the completion task doesn't conclude within
0.01 sec, we cancel the hint-completion to keep the input in the REPL
smooth.

There are still some points left open for discussion:
- Is it better to allocate a separate thread specifically for REPL
  completion? I'm not sure if this is even possible though.
- Should we make this an optional feature, considering the concern some
  users might have about reduced thread resources?
- For situations where completion hangs or is slow, like in #52763,
  canceling the completion task to release resources would be ideal.
  However, my understanding is that there's no safe method to cancel a
  task, is it correct?
- At present, this commit `Threads.@spawn`s at a relatively high level
  in the completion pipeline. But it might be more effective to
  `Threads.@spawn` closer to the point where inference is actually
  invoked, such as in `complete_line` or `repl_eval_ex`.
@topolarity
Copy link
Member

Simpler MWE that I hit today:

julia> muladd(t) = 0.0 * t + 10.0
muladd (generic function with 1 method)

julia> (@code_typed muladd(0.0)).<tab>

Pause is >10 seconds

@aviatesk
Copy link
Member

aviatesk commented Jan 13, 2024

Indeed, since the code in question internally invokes the whole Julia level compilation pipeline, it's reasoable for the REPL inference (by REPLInterpreter on the base inference codebase) to be time-consuming. We could create a special case for entry points to the Julia-level compilation pipeline like typeinf to prevent REPLInterpreter from doing these expensive inferences, but this approach isn't a broadly applicable solution. Ultimately, a resolution through #52847 would be most ideal.

aviatesk added a commit that referenced this issue Jan 13, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 13, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 14, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 14, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 14, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 15, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 15, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 15, 2024
Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy'. This can lead to an unintended infinite loop with
a custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result),
aggressive const-prop' isn't necessary for such cases, and I don't
anticipate this leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 16, 2024
…52836)

Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy`. This can lead to an unintended infinite loop with a
custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result), aggressive
const-prop' isn't necessary for such cases, and I don't anticipate this
leading to any obvious regression.

fix #52763
aviatesk added a commit that referenced this issue Jan 16, 2024
…52836)

Investigating into #52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy`. This can lead to an unintended infinite loop with a
custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result), aggressive
const-prop' isn't necessary for such cases, and I don't anticipate this
leading to any obvious regression.

fix #52763
Drvi pushed a commit to RelationalAI/julia that referenced this issue Jun 7, 2024
…uliaLang#52836)

Investigating into JuliaLang#52763, I've found that `AbstractInterpreters` which
enables the `aggressive_constprop` option, such as `REPLInterpreter`,
might perform const-prop' even if the result of a non-const call is
`LimitedAccuracy`. This can lead to an unintended infinite loop with a
custom aggressive const-prop' implementation.

This commit restricts const-prop' for such cases where the non-const
call result is limited to avoid the issue. This fix is conservative, but
given that accurate inference is mostly impossible when there are
unresolvable cycles (which is indicated by limited result), aggressive
const-prop' isn't necessary for such cases, and I don't anticipate this
leading to any obvious regression.

fix JuliaLang#52763
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Indicates an unexpected problem or unintended behavior compiler:inference Type inference REPL Julia's REPL (Read Eval Print Loop)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants