Skip to content

Precompilation crash with promotion #22179

@rdeits

Description

@rdeits

This was lovingly distilled from the nightly failures of GeometryTypes.jl. Create the following module inside .julia/v0.7/Foo/src/Foo.jl:

__precompile__()

module Foo

immutable OffsetInteger{O, T <: Integer} <: Integer
    i::T
    function (::Type{OffsetInteger{O, T}}){O, T}(x::T)
        new{O, T}(x - O)
    end
end

Base.promote_type{T <: Int, OI <: OffsetInteger}(::Type{T}, ::Type{OI}) = T
Base.promote_type{T <: Int, OI <: OffsetInteger}(::Type{OI}, ::Type{T}) = T

end

and then run using Foo in Julia master to see:

julia> using Foo

WARNING: deprecated syntax "immutable" at /Users/rdeits/.julia/v0.7/Foo/src/Foo.jl:5.
Use "struct" instead.
INFO: Precompiling module Foo.

WARNING: deprecated syntax "immutable" at /Users/rdeits/.julia/v0.7/Foo/src/Foo.jl:5.
Use "struct" instead.

ERROR: fatal: error thrown and no exception handler available.
Base.MethodError(f=typeof(Base.promote_type)(), args=(Core.TypeofBottom(), Int64), world=0x00000000000055f1)
rec_backtrace at /Users/rdeits/Projects/julia/src/stackwalk.c:84
record_backtrace at /Users/rdeits/Projects/julia/src/task.c:245 [inlined]
jl_throw at /Users/rdeits/Projects/julia/src/task.c:564
jl_method_error_bare at /Users/rdeits/Projects/julia/src/gf.c:1469
jl_method_error at /Users/rdeits/Projects/julia/src/gf.c:1487
jl_lookup_generic_ at /Users/rdeits/Projects/julia/src/gf.c:1900
jl_apply_generic at /Users/rdeits/Projects/julia/src/gf.c:1920
uv_write at ./stream.jl:803
unsafe_write at ./stream.jl:832
print at ./strings/io.jl:122 [inlined]
#with_output_color#525 at ./util.jl:404
jl_apply at /Users/rdeits/Projects/julia/src/./julia.h:1424 [inlined]
jl_f__apply at /Users/rdeits/Projects/julia/src/builtins.c:426
#with_output_color at ./<missing>:0
jl_apply at /Users/rdeits/Projects/julia/src/./julia.h:1424 [inlined]
jl_f__apply at /Users/rdeits/Projects/julia/src/builtins.c:426
#print_with_color#526 at ./util.jl:417
jl_apply at /Users/rdeits/Projects/julia/src/./julia.h:1424 [inlined]
jl_f__apply at /Users/rdeits/Projects/julia/src/builtins.c:426
#print_with_color at ./<missing>:0
display_error at ./client.jl:133
unknown function (ip: 0x11c94de9d)
display_error at ./client.jl:142
unknown function (ip: 0x11c94d8c6)
do_call at /Users/rdeits/Projects/julia/src/interpreter.c:75
eval at /Users/rdeits/Projects/julia/src/interpreter.c:242
eval_body at /Users/rdeits/Projects/julia/src/interpreter.c:539
jl_toplevel_eval_body at /Users/rdeits/Projects/julia/src/interpreter.c:511
jl_toplevel_eval_flex at /Users/rdeits/Projects/julia/src/toplevel.c:569
jl_toplevel_eval_in at /Users/rdeits/Projects/julia/src/builtins.c:496
eval at ./boot.jl:236
jlcall_eval_18290 at /Users/rdeits/Projects/julia/usr/lib/julia/sys.dylib (unknown line)
_start at ./client.jl:419
jlcall__start_19148 at /Users/rdeits/Projects/julia/usr/lib/julia/sys.dylib (unknown line)
true_main at /Users/rdeits/Projects/julia/./julia (unknown line)
main at /Users/rdeits/Projects/julia/./julia (unknown line)

(this also crashes Julia itself).

I've seen this on OSX, Linux, and Windows. v0.6-rc2 seems to be fine.

julia> versioninfo()
Julia Version 0.7.0-DEV.439
Commit e36e412 (2017-06-01 18:48 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin15.6.0)
  CPU: Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, sandybridge)

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