Skip to content

World age assertion failure on release-1.0 in debug mode #29425

@blegat

Description

@blegat

Steps to reproduce:

] add JuMP#master
] add PolyJuMP#master

Build Julia with release-1.0 in debug mode:

$ make debug

I just did it and I get

julia> versioninfo()
Julia Version 1.0.1-pre.171
Commit 398d87829d* (2018-09-26 22:52 UTC)
DEBUG build
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.0 (ORCJIT, skylake)

Try using PolyJuMP:

$ ./usr/bin/julia-debug -e 'using PolyJuMP'
julia-debug: /home/blegat/git/julia/src/gf.c:1432: jl_method_instance_add_backedge: Assertion `callee->def.method->min_world <= caller->min_world && callee->max_world >= caller->max_world' failed.

signal (6): Aborted
in expression starting at /home/blegat/.julia/dev/PolyJuMP/src/basis.jl:3
gsignal at /usr/lib/libc.so.6 (unknown line)
abort at /usr/lib/libc.so.6 (unknown line)
__assert_fail_base.cold.0 at /usr/lib/libc.so.6 (unknown line)
__assert_fail at /usr/lib/libc.so.6 (unknown line)
jl_method_instance_add_backedge at /home/blegat/git/julia/src/gf.c:1432
store_backedges at ./compiler/typeinfer.jl:197
typeinf at ./compiler/typeinfer.jl:72
typeinf_edge at ./compiler/typeinfer.jl:492
abstract_call_method at ./compiler/abstractinterpretation.jl:342
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:81
abstract_eval_call at ./compiler/abstractinterpretation.jl:817
abstract_eval at ./compiler/abstractinterpretation.jl:904
typeinf_local at ./compiler/abstractinterpretation.jl:1114
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1184
typeinf at ./compiler/typeinfer.jl:15
typeinf_edge at ./compiler/typeinfer.jl:492
abstract_call_method at ./compiler/abstractinterpretation.jl:342
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:81
abstract_eval_call at ./compiler/abstractinterpretation.jl:817
abstract_eval at ./compiler/abstractinterpretation.jl:904
typeinf_local at ./compiler/abstractinterpretation.jl:1128
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1184
typeinf at ./compiler/typeinfer.jl:15
typeinf_edge at ./compiler/typeinfer.jl:492
abstract_call_method at ./compiler/abstractinterpretation.jl:342
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:81
abstract_call at ./compiler/abstractinterpretation.jl:790
abstract_eval_call at ./compiler/abstractinterpretation.jl:819
abstract_eval at ./compiler/abstractinterpretation.jl:904
typeinf_local at ./compiler/abstractinterpretation.jl:1128
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1184
typeinf at ./compiler/typeinfer.jl:15
typeinf_edge at ./compiler/typeinfer.jl:492
abstract_call_method at ./compiler/abstractinterpretation.jl:342
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:81
abstract_call at ./compiler/abstractinterpretation.jl:790
abstract_eval_call at ./compiler/abstractinterpretation.jl:819
abstract_eval at ./compiler/abstractinterpretation.jl:904
typeinf_local at ./compiler/abstractinterpretation.jl:1128
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1184
typeinf at ./compiler/typeinfer.jl:15
typeinf_ext at ./compiler/typeinfer.jl:567
typeinf_ext at ./compiler/typeinfer.jl:604
jfptr_typeinf_ext_1 at /home/blegat/git/julia/usr/lib/julia/sys-debug.so (unknown line)
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
jl_apply at /home/blegat/git/julia/src/julia.h:1537
jl_apply_with_saved_exception_state at /home/blegat/git/julia/src/rtutils.c:257
jl_type_infer at /home/blegat/git/julia/src/gf.c:275
jl_compile_method_internal at /home/blegat/git/julia/src/gf.c:1786
jl_fptr_trampoline at /home/blegat/git/julia/src/gf.c:1830
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
do_call at /home/blegat/git/julia/src/interpreter.c:324
eval_value at /home/blegat/git/julia/src/interpreter.c:430
eval_stmt_value at /home/blegat/git/julia/src/interpreter.c:363
eval_body at /home/blegat/git/julia/src/interpreter.c:678
jl_interpret_toplevel_thunk_callback at /home/blegat/git/julia/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7f171724e94f)
unknown function (ip: 0x4)
jl_interpret_toplevel_thunk at /home/blegat/git/julia/src/interpreter.c:804
jl_toplevel_eval_flex at /home/blegat/git/julia/src/toplevel.c:813
jl_parse_eval_all at /home/blegat/git/julia/src/ast.c:838
jl_load at /home/blegat/git/julia/src/toplevel.c:847
jl_load_ at /home/blegat/git/julia/src/toplevel.c:854
include at ./boot.jl:317 [inlined]
include_relative at ./loading.jl:1041
include at ./sysimg.jl:29 [inlined]
include at /home/blegat/.julia/dev/PolyJuMP/src/PolyJuMP.jl:3
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_fptr_trampoline at /home/blegat/git/julia/src/gf.c:1831
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
do_call at /home/blegat/git/julia/src/interpreter.c:324
eval_value at /home/blegat/git/julia/src/interpreter.c:430
eval_stmt_value at /home/blegat/git/julia/src/interpreter.c:363
eval_body at /home/blegat/git/julia/src/interpreter.c:678
jl_interpret_toplevel_thunk_callback at /home/blegat/git/julia/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7f1714e05c2f)
unknown function (ip: 0xffffffffffffffff)
jl_interpret_toplevel_thunk at /home/blegat/git/julia/src/interpreter.c:804
jl_toplevel_eval_flex at /home/blegat/git/julia/src/toplevel.c:813
jl_eval_module_expr at /home/blegat/git/julia/src/toplevel.c:233
jl_toplevel_eval_flex at /home/blegat/git/julia/src/toplevel.c:651
jl_parse_eval_all at /home/blegat/git/julia/src/ast.c:838
jl_load at /home/blegat/git/julia/src/toplevel.c:847
jl_load_ at /home/blegat/git/julia/src/toplevel.c:854
include at ./boot.jl:317 [inlined]
include_relative at ./loading.jl:1041
include at ./sysimg.jl:29
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
do_call at /home/blegat/git/julia/src/interpreter.c:324
eval_value at /home/blegat/git/julia/src/interpreter.c:430
eval_stmt_value at /home/blegat/git/julia/src/interpreter.c:363
eval_body at /home/blegat/git/julia/src/interpreter.c:678
eval_body at /home/blegat/git/julia/src/interpreter.c:613
jl_interpret_toplevel_thunk_callback at /home/blegat/git/julia/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7f17562dc0ff)
unknown function (ip: 0x2)
jl_interpret_toplevel_thunk at /home/blegat/git/julia/src/interpreter.c:804
jl_toplevel_eval_flex at /home/blegat/git/julia/src/toplevel.c:813
jl_toplevel_eval at /home/blegat/git/julia/src/toplevel.c:822
jl_toplevel_eval_in at /home/blegat/git/julia/src/builtins.c:622
eval at ./boot.jl:319 [inlined]
eval at ./client.jl:389
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
top-level scope at ./none:3
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_fptr_trampoline at /home/blegat/git/julia/src/gf.c:1831
jl_toplevel_eval_flex at /home/blegat/git/julia/src/toplevel.c:807
jl_toplevel_eval at /home/blegat/git/julia/src/toplevel.c:822
jl_toplevel_eval_in at /home/blegat/git/julia/src/builtins.c:622
eval at ./boot.jl:319
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
macro expansion at ./logging.jl:317 [inlined]
exec_options at ./client.jl:219
_start at ./client.jl:421
jl_fptr_args at /home/blegat/git/julia/src/gf.c:1841
jl_apply_generic at /home/blegat/git/julia/src/gf.c:2184
jl_apply at /home/blegat/git/julia/ui/../src/julia.h:1537
true_main at /home/blegat/git/julia/ui/repl.c:112
main at /home/blegat/git/julia/ui/repl.c:233
__libc_start_main at /usr/lib/libc.so.6 (unknown line)
_start at /home/blegat/git/julia/usr/bin/julia-debug (unknown line)
Allocations: 8771599 (Pool: 8770570; Big: 1029); GC: 15
ERROR: Failed to precompile PolyJuMP [ddf597a6-d67e-5340-b84c-e37d84115374] to /home/blegat/.julia/compiled/v1.0/PolyJuMP/5SrbL.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] macro expansion at ./logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at ./loading.jl:1187
 [4] macro expansion at ./logging.jl:311 [inlined]
 [5] _require(::Base.PkgId) at ./loading.jl:944
 [6] require(::Base.PkgId) at ./loading.jl:855
 [7] macro expansion at ./logging.jl:311 [inlined]
 [8] require(::Module, ::Symbol) at ./loading.jl:837

It seems related to #28595 but I don't have any evidence that this is caused by a generated function.
Note that PolyJuMP is using MultivariatePolynomials which has caused world age failure in the past for him packages depending on it (#22355 (comment)) but it compiles fine here:

$ ./usr/bin/julia-debug -e 'using MultivariatePolynomials'

World age issues with MultivariatePolynomials have been a nightmare on Julia v0.6, it kept disappearing an reappearing for random reasons and I was hoping that it would all be over with Julia v1.0. Any idea ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions