You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
minimum might cause crash on 1.7 and master (observed on both Windows x86_64 and macOS x86_64) #43731
Found this when working on #43604. Could be fixed by some code change, but crash might means deeper bug, so I open this Issue:
julia>versioninfo()
Julia Version 1.8.0-DEV.1090
Commit d16f4806e9 (2021-12-0110:54 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU:Intel(R) Core(TM) i5-9600KF CPU @ 3.70GHz
WORD_SIZE:64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, skylake)
julia> a =collect(1.0:4);
julia>f(x) = x <3?missing: x;
julia>minimum(f, a; dims =1)
<unknown>:0: error: starting new .cfi frame before finishing the previous one
<unknown>:0: error: this directive must appear between .cfi_startproc and .cfi_endproc directives
<unknown>:0: error: starting new .cfi frame before finishing the previous one
<unknown>:0: error: this directive must appear between .cfi_startproc and .cfi_endproc directives
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x0-- unknown function (ip:0000000000000000)
in expression starting at none:0
unknown function (ip:0000000000000000)
Allocations:865948 (Pool:865603; Big:345); GC:1
I am able to reproduce this crash with Julia 1.7.1 (official binaries) on macOS x86_64. Here is the full log, which includes the contents of the LLVM module that was printed to stdout.
changed the title [-]`minimum` might cause crash on 1.7 and master (Win64)[/-][+]`minimum` might cause crash on 1.7 and master (observed on both Windows x86_64 and macOS x86_64)[/+]on Jan 10, 2022
The secondary failure here is a stackoverflow somewhere inside LLVM, which is why LLVM gets into a bad state and aborts when we try to print the source of the failure:
#0 0x00007ffff23e50b2 in llvm::SmallVectorImpl<llvm::TargetInstrInfo::RegSubRegPair>::operator=(llvm::SmallVectorImpl<llvm::TargetInstrInfo::RegSubRegPair> const&)
() from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#1 0x00007ffff23e5306 in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#2 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#3 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#4 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#5 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#6 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#7 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#8 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#9 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
...
#32675 0x00007ffff23e539f in getNewSource(llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*, llvm::TargetInstrInfo::RegSubRegPair, llvm::SmallDenseMap<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult, 4u, llvm::DenseMapInfo<llvm::TargetInstrInfo::RegSubRegPair>, llvm::detail::DenseMapPair<llvm::TargetInstrInfo::RegSubRegPair, (anonymous namespace)::ValueTrackerResult> > const&, bool) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32676 0x00007ffff23e87dc in (anonymous namespace)::PeepholeOptimizer::runOnMachineFunction(llvm::MachineFunction&) [clone .part.265] ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32677 0x00007ffff22ca566 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
--Type <RET> for more, q to quit, c to continue without paging--
#32678 0x00007ffff1feb7c8 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32679 0x00007ffff1febae9 in llvm::FPPassManager::runOnModule(llvm::Module&) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32680 0x00007ffff1fec8e0 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32681 0x00007ffff6e8b895 in JuliaOJIT::CompilerT::operator() (this=0x5555557409b0, M=...) at /data/vtjnash/julia/src/jitlayers.cpp:571
#32682 0x00007ffff3d5aecb in llvm::orc::IRCompileLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32683 0x00007ffff3d6890c in llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32684 0x00007ffff3d208db in llvm::orc::MaterializationTask::run() () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32685 0x00007ffff3d0234d in void llvm::detail::UniqueFunctionBase<void, std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> > >::CallImpl<void (*)(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >)>(void*, std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >&) ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32686 0x00007ffff3d040e2 in llvm::orc::ExecutionSession::dispatchTask(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32687 0x00007ffff3d1eb1c in llvm::orc::ExecutionSession::dispatchOutstandingMUs() () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32688 0x00007ffff3d281ab in llvm::orc::ExecutionSession::OL_completeLookup(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, std::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32689 0x00007ffff3d28e4d in llvm::orc::InProgressFullLookupState::complete(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32690 0x00007ffff3d12283 in llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, llvm::Error) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32691 0x00007ffff3d1efee in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol> > >)>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>) () from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32692 0x00007ffff3d1f2b2 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet const&, llvm::orc::LookupKind, llvm::orc::SymbolState, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> >, llvm::DenseMapInfo<llvm::orc::JITDylib*>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr> > > > const&)>)
() from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32693 0x00007ffff3d1f732 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolState) ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32694 0x00007ffff3d1fa03 in llvm::orc::ExecutionSession::lookup(llvm::ArrayRef<llvm::orc::JITDylib*>, llvm::orc::SymbolStringPtr, llvm::orc::SymbolState) ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
#32695 0x00007ffff3d1fc2f in llvm::orc::ExecutionSession::lookup(llvm::ArrayRef<llvm::orc::JITDylib*>, llvm::StringRef, llvm::orc::SymbolState) ()
from /data/vtjnash/julia/usr/bin/../lib/libLLVM-13jl.so
...
julia> a =collect(1.0:4);
julia>f(x) = x <3?missing: x;
julia>minimum(f, a; dims =1)
ERROR: ArgumentError: cannot construct a value of type Union{} forreturn result
Activity
DilumAluthge commentedon Jan 10, 2022
I am able to reproduce this crash with Julia 1.7.1 (official binaries) on macOS x86_64. Here is the full log, which includes the contents of the LLVM module that was printed to stdout.
Click to expand:
[-]`minimum` might cause crash on 1.7 and master (Win64)[/-][+]`minimum` might cause crash on 1.7 and master (observed on both Windows x86_64 and macOS x86_64)[/+]vtjnash commentedon Jan 11, 2022
The secondary failure here is a stackoverflow somewhere inside LLVM, which is why LLVM gets into a bad state and aborts when we try to print the source of the failure:
vtjnash commentedon Jan 11, 2022
and also, fwiw, the expected result of this call (from -O0) is:
vtjnash commentedon Jan 11, 2022
code_llvm(Base.mapreduce_impl, (typeof(f),typeof(min),Vector{Float64},Int64,Int64))+ repeatedbugpoint --run-llcresults in:Which results in the same crash for many LLVM versions.
mbauman commentedon Aug 29, 2024
The error on nightly is now:
And — even better — this, too is fixed by #55318.