Skip to content

Inference failure with 0.6 + StaticArrays hcat #21244

@tkoolen

Description

@tkoolen

With StaticArrays latest master,

using StaticArrays

struct Foo
    bar::SMatrix{3, 3, Float64}
    Foo() = new(eye(SMatrix{3, 3, Float64}))
end

function f(foo::Foo)
    hcat(foo.bar[:, SVector(1, 2)], zeros(SMatrix{3, 3, Float64}))
end

foo = Foo()
f(foo)

sometimes results in

WARNING: An error occurred during inference. Type inference is now partially disabled.

signal (11): Segmentation fault
while loading /home/twan/code/RigidBodyDynamics/v0.6/RigidBodyDynamics/segfault.jl, in expression starting on line 13
_ZN4llvm17ScheduleDAGMILive19updatePressureDiffsENS_8ArrayRefINS_16RegisterMaskPairEEE at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
_ZN4llvm17ScheduleDAGMILive15initRegPressureEv at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
_ZN4llvm17ScheduleDAGMILive8scheduleEv at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
unknown function (ip: 0x7fd185333fd0)
unknown function (ip: 0x7fd18533c83f)
_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE at /home/twan/code/julia/usr/bin/../lib/libLLVM-3.9.so (unknown line)
operator() at /home/twan/code/julia/src/jitlayers.cpp:442 [inlined]
_M_invoke at /usr/include/c++/5/functional:1857
operator() at /usr/include/c++/5/functional:2267 [inlined]
addModuleSet<llvm::SmallVector<std::unique_ptr<llvm::Module>, 1u>, llvm::RTDyldMemoryManager*, std::unique_ptr<llvm::orc::LambdaResolver<JuliaOJIT::addModule(std::unique_ptr<llvm::Module>)::<lambda(const string&)>, JuliaOJIT::addModule(std::unique_ptr<llvm::Module>)::<lambda(const string&)> >, std::default_delete<llvm::orc::LambdaResolver<JuliaOJIT::addModule(std::unique_ptr<llvm::Module>)::<lambda(const string&)>, JuliaOJIT::addModule(std::unique_ptr<llvm::Module>)::<lambda(const string&)> > > > > at /home/twan/code/julia/usr/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h:73 [inlined]
addModule at /home/twan/code/julia/src/jitlayers.cpp:569
jl_add_to_ee at /home/twan/code/julia/src/jitlayers.cpp:792 [inlined]
jl_finalize_function at /home/twan/code/julia/src/jitlayers.cpp:803
getAddressForFunction at /home/twan/code/julia/src/codegen.cpp:1360
jl_generate_fptr at /home/twan/code/julia/src/codegen.cpp:1457
jl_compile_method_internal at /home/twan/code/julia/src/julia_internal.h:313 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:341 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
println at ./boot.jl:378 [inlined]
println at ./boot.jl:382
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
typeinf_loop at ./inference.jl:2657
typeinf_frame at ./inference.jl:2467
typeinf_code at ./inference.jl:2537
unknown function (ip: 0x7fd18128c5dd)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
typeinf_ext at ./inference.jl:2576
unknown function (ip: 0x7fd18126bfe2)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
jl_apply at /home/twan/code/julia/src/julia.h:1416 [inlined]
jl_type_infer at /home/twan/code/julia/src/gf.c:269
jl_compile_for_dispatch at /home/twan/code/julia/src/gf.c:1629
jl_compile_method_internal at /home/twan/code/julia/src/julia_internal.h:294 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:341 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
f at /home/twan/code/RigidBodyDynamics/v0.6/RigidBodyDynamics/segfault.jl:9
unknown function (ip: 0x7fcf53f60792)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
do_call at /home/twan/code/julia/src/interpreter.c:75
eval at /home/twan/code/julia/src/interpreter.c:242
jl_interpret_toplevel_expr at /home/twan/code/julia/src/interpreter.c:34
jl_toplevel_eval_flex at /home/twan/code/julia/src/toplevel.c:577
jl_parse_eval_all at /home/twan/code/julia/src/ast.c:873
jl_load at /home/twan/code/julia/src/toplevel.c:616
include_from_node1 at ./loading.jl:539
unknown function (ip: 0x7fd1813edf3b)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
include at ./sysimg.jl:14
unknown function (ip: 0x7fd18129167b)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
process_options at ./client.jl:305
_start at ./client.jl:371
unknown function (ip: 0x7fd18141b578)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
jl_apply at /home/twan/code/julia/ui/../src/julia.h:1416 [inlined]
true_main at /home/twan/code/julia/ui/repl.c:127
main at /home/twan/code/julia/ui/repl.c:264
__libc_start_main at /build/glibc-9tT8Do/glibc-2.23/csu/../csu/libc-start.c:291
unknown function (ip: 0x401668)
Allocations: 3910719 (Pool: 3909327; Big: 1392); GC: 5
Segmentation fault (core dumped)

other times in

WARNING: An error occurred during inference. Type inference is now partially disabled.
StackOverflowError()
forall_exists_subtype at /home/twan/code/julia/src/subtype.c:881
jl_subtype_env at /home/twan/code/julia/src/subtype.c:948
abstract_eval at ./inference.jl:1902
unknown function (ip: 0x7efefe0b0df6)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
copy! at ./abstractarray.jl:565
abstract_eval_call at ./inference.jl:1866
abstract_eval at ./inference.jl:1915
unknown function (ip: 0x7efefe0b0df6)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234
copy! at ./abstractarray.jl:565
abstract_eval_call at ./inference.jl:1866
abstract_eval at ./inference.jl:1915
unknown function (ip: 0x7efefe0b0df6)
jl_call_fptr_internal at /home/twan/code/julia/src/julia_internal.h:326 [inlined]
jl_call_method_internal at /home/twan/code/julia/src/julia_internal.h:345 [inlined]
jl_apply_generic at /home/twan/code/julia/src/gf.c:2234

<repeating>

versioninfo():

Julia Version 0.6.0-pre.alpha.329
Commit cded1db (2017-03-31 00:28 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, broadwell)

StaticArrays SHA: bd3236ac39372aa84891bea066c71d63559af29e

cc: @andyferris

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIndicates an unexpected problem or unintended behavior

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions