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

World age assertion precompiling modules #26278

Closed
maleadt opened this issue Mar 1, 2018 · 14 comments
Closed

World age assertion precompiling modules #26278

maleadt opened this issue Mar 1, 2018 · 14 comments
Assignees
Labels
bug Indicates an unexpected problem or unintended behavior compiler:inference Type inference compiler:precompilation Precompilation of modules

Comments

@maleadt
Copy link
Member

maleadt commented Mar 1, 2018

EDIT: reduced example in #26278 (comment)

Set-up:

$ julia-dev
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.7.0-DEV.4432 (2018-02-28 23:31 UTC)
 _/ |\__'_|_|_|\__'_|  |  master/115b86bec0* (fork: 3391 commits, 225 days)
|__/                   |  x86_64-pc-linux-gnu

julia> Pkg.add("DataFrames")

julia> Pkg.status()
1 required packages:
 - DataFrames                    0.11.5
18 additional packages:
 - BinDeps                       0.8.7
 - CategoricalArrays             0.3.4
 - CodecZlib                     0.4.2
 - Compat                        0.55.1
 - DataStreams                   0.3.4
 - DataStructures                0.7.4
 - JSON                          0.17.1
 - Missings                      0.2.7
 - NamedTuples                   4.0.0
 - Nullables                     0.0.3
 - Reexport                      0.1.0
 - SHA                           0.5.6
 - SortingAlgorithms             0.2.0
 - SpecialFunctions              0.3.8
 - StatsBase                     0.20.1
 - TranscodingStreams            0.5.0
 - URIParser                     0.3.0
 - WeakRefStrings                0.4.2

Repro:

using DataFrames
foo() = @assert bar == 42

Works in the REPL:

julia> using DataFrames
julia> foo() = @assert bar == 42
foo (generic function with 1 method)

But hangs the compiler when executed (with DataFrames already precompiled) from a file, or with --eval:

$ julia-dev -e "using DataFrames; foo() = @assert bar == 42"
<indefinite hang>

Running with assertions produces the following assertion failure:

julia-debug-dev: src/gf.c:1404: void jl_method_instance_add_backedge(jl_method_instance_t *, jl_method_instance_t *): Assertion `callee->def.method->min_world <= caller->min_world && callee->max_world >= caller->max_world' failed.

signal (6): Aborted
in expression starting at no file:0
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f2f2a759e36)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
jl_method_instance_add_backedge at src/gf.c:1404
finalize_backedges at base/compiler/typeinfer.jl:15
typeinf at base/compiler/typeinfer.jl:462
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
abstract_interpret at base/compiler/abstractinterpretation.jl:866
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
abstract_interpret at base/compiler/abstractinterpretation.jl:866
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
abstract_interpret at base/compiler/abstractinterpretation.jl:866
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
abstract_interpret at base/compiler/abstractinterpretation.jl:866
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_apply at base/compiler/abstractinterpretation.jl:414
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:463
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_edge at base/compiler/typeinfer.jl:137
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_method at base/compiler/abstractinterpretation.jl:281
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call_gf_by_type at base/compiler/abstractinterpretation.jl:78
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:663
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_apply at base/compiler/abstractinterpretation.jl:414
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_call at base/compiler/abstractinterpretation.jl:463
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_eval_call at base/compiler/abstractinterpretation.jl:692
abstract_eval at base/compiler/abstractinterpretation.jl:713
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
abstract_interpret at base/compiler/abstractinterpretation.jl:858
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_work at base/compiler/typeinfer.jl:276
typeinf at base/compiler/typeinfer.jl:407
typeinf_frame at base/compiler/typeinfer.jl:96 [inlined]
typeinf_code at base/compiler/typeinfer.jl:190
jlcall_typeinf_code_112 at /opt/julia-dev/usr/lib/julia/sys-debug.so (unknown line)
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
typeinf_ext at base/compiler/typeinfer.jl:232
jlcall_typeinf_ext_10 at /opt/julia-dev/usr/lib/julia/sys-debug.so (unknown line)
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
jl_apply at src/julia.h:1527
jl_apply_with_saved_exception_state at src/rtutils.c:257
jl_type_infer at src/gf.c:267
jl_compile_for_dispatch at src/gf.c:1785
jl_compile_method_internal at src/julia_internal.h:351
jl_call_method_internal at src/julia_internal.h:398
jl_apply_generic at src/gf.c:2094
@assert at base/error.jl:140
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_invoke_julia_macro at src/ast.c:990
jl_expand_macros at src/ast.c:1052
jl_expand_macros at src/ast.c:1078
jl_expand_macros at src/ast.c:1078
jl_expand at src/ast.c:1112
jl_toplevel_eval_flex at src/toplevel.c:746
jl_toplevel_eval_flex at src/toplevel.c:756
jl_toplevel_eval at src/toplevel.c:820
jl_toplevel_eval_in at src/builtins.c:626
eval at base/boot.jl:308 [inlined]
eval at base/sysimg.jl:74
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
exec_options at base/client.jl:309
_start at base/client.jl:448
jl_call_fptr_internal at src/julia_internal.h:383
jl_call_method_internal at src/julia_internal.h:402
jl_apply_generic at src/gf.c:2094
unknown function (ip: 0x401d14)
unknown function (ip: 0x4018ee)
unknown function (ip: 0x401785)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x4014f9)
Allocations: 5633681 (Pool: 5632679; Big: 1002); GC: 10

Ref #23981 #24449

@maleadt maleadt added bug Indicates an unexpected problem or unintended behavior compiler:inference Type inference labels Mar 1, 2018
@thofma
Copy link
Contributor

thofma commented Apr 5, 2018

I am running into the same issue with some random combination of precompiled modules and function definition. Can you still reproduce this on latest master? I can't check with my example due to #26665.

@maleadt
Copy link
Member Author

maleadt commented Apr 10, 2018

Yes, this still reproduces, on 000f243 with updated packages as of today.

@maleadt
Copy link
Member Author

maleadt commented Apr 12, 2018

Turns out this is not as easy to reproduce, and depends on the system I'm trying on. Maybe because of precompilation's nondeterminism (#25900)? Anyway, I'm trying to reduce the 50KSLOC that makes up DataFrames & deps to something sensible, I'll post that here when I have something that reproduces.

@maleadt
Copy link
Member Author

maleadt commented Apr 12, 2018

OK, managed to reduce and reproduce: https://github.com/maleadt/26278

Check-out the repo, and execute build_run, which

  • checks-out Julia at 000f243 and compiles with some assertions enabled
  • executes run in a fresh pkgdir/depot until the crash happens

The code is ~100LOC, reduced from DataFrames.jl + deps by running creduce.
Reproduces consistently on anubis.

@maleadt maleadt changed the title World age assertion using DataFrames + function definition World age assertion precompiling modules Apr 12, 2018
@maleadt
Copy link
Member Author

maleadt commented Apr 12, 2018

OK, looks like this repro only needs a build with assertions enabled.
I hope this is reduced enough to be debuggable?

Building with ASAN now, but I assume this won't be a memory error.
No memory errors.

@maleadt
Copy link
Member Author

maleadt commented Apr 13, 2018

Fully reduced, ~50LOC now. Looks like the incremental deserializer isn't properly invalidating methods?
I'm not familiar with this code, hope somebody else can look at this.

@maleadt
Copy link
Member Author

maleadt commented Jul 5, 2018

Gets triggered somewhere else nowadays, but hasn't changed fundamentally:

julia: /home/maleadt/Julia/julia-dev/src/dump.c:1839: jl_value_t *jl_deserialize_typemap_entry(jl_serializer_state *): Assertion `(te->func.linfo->max_world == 0 && te->func.linfo->min_world == 1) || (te->func.linfo->max_world >= te->max_world && te->func.linfo->min_world <= te->min_world) && "corrupt typemap entry structure"' failed.

@ViralBShah ViralBShah added the triage This should be discussed on a triage call label Jul 5, 2018
@StefanKarpinski
Copy link
Member

StefanKarpinski commented Jul 5, 2018

Dude, for the 1,000,000 time, the triage label is not a lever to get people to look at bugs.

@StefanKarpinski StefanKarpinski removed the triage This should be discussed on a triage call label Jul 5, 2018
@ViralBShah
Copy link
Member

The whole process of what goes on a milestone is unclear. It seemed like an important enough bug that I felt like marking triage so that triage could decide if it goes on the milestone. i.e. It does seem like a lever.

If there are some well articulated rules for how this label works, I'll be happy to not piss everyone off.

@StefanKarpinski StefanKarpinski added this to the 1.0.x milestone Jul 5, 2018
@JeffBezanson
Copy link
Member

What goes on a milestone is changes that must be in a release because they are breaking, or otherwise release-defining. In contrast, bugs can be fixed any time and released in a point release like 1.0.x.

@JeffBezanson JeffBezanson added the compiler:precompilation Precompilation of modules label Jul 5, 2018
@ViralBShah
Copy link
Member

It would seem that some bugs would be release stopping perhaps. But if the triage and milestone labels are strictly for features only, I can use them accordingly.

@JeffBezanson
Copy link
Member

Yes, a bug can be release-blocking if it's severe enough. In the past I believe we've been most interested in release-blocking bugs during the RC period, since fixing those is the main point of RCs. I think the thing to do in that case is clearly comment that you're marking a bug for triage because you believe it's release-blocking. The bar for that is pretty high though.

@Keno
Copy link
Member

Keno commented Jul 21, 2018

I suspect this is fixed by the combination of #27568 and #28215

@Keno Keno closed this as completed Jul 21, 2018
@maleadt
Copy link
Member Author

maleadt commented Jul 21, 2018

Thanks for looking into this!

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 compiler:precompilation Precompilation of modules
Projects
None yet
Development

No branches or pull requests

7 participants