Julia: World age assertion precompiling modules

Created on 1 Mar 2018  路  14Comments  路  Source: JuliaLang/julia

EDIT: reduced example in https://github.com/JuliaLang/julia/issues/26278#issuecomment-380817655

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

bug inference precompile

Most helpful comment

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.

All 14 comments

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 https://github.com/JuliaLang/julia/issues/26665.

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

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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

Thanks for looking into this!

Was this page helpful?
0 / 5 - 0 ratings