Skip to content

OpenCilk 2.0 RC1 issues with multiple sanitizers: crash #113

@wheatman

Description

@wheatman

Specifying multiple sanitizers seems to cause some weird behavior.
I was not able to make that small of an example, but you can find the code I am using at https://github.com/wheatman/ConcurrentHashMap

If I compile with the following I get a crash that did not in version 1.1 but did in the first release candidate, I just didn't find it until now.
/home/ubuntu/opencilkv2rc2_build/bin/clang++ -Wall -Wextra -O3 -g -std=c++17 -fno-omit-frame-pointer -fopencilk -fsanitize=cilk,undefined,thread -fno-omit-frame-pointer -fno-signed-zeros -freciprocal-math -ffp-contract=fast -fno-trapping-math -ffinite-math-only -DOPENMP=0 -DCILK=1 -DENABLE_TRACE_TIMER=1 -DVERIFY=0 -DPARALLEL=1 -DNDEBUG main.cpp -lrt -lm -lm -ldl -Lx86_64/ -lopencilk -o basic

/home/ubuntu/opencilkv2rc2_build/bin/clang++ --version
clang version 14.0.6 (https://github.com/OpenCilk/opencilk-project 1c9214219d07376247d9c89803cb005abfc60ab8)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/ubuntu/opencilkv2rc2_build/bin

The error backtrace is

clang-14: /home/ubuntu/opencilk/llvm/lib/Transforms/Tapir/LoweringUtils.cpp:193: llvm::TaskValueSetMap llvm::findAllTaskInputs(llvm::Function &, const llvm::DominatorTree &, const llvm::TaskInfo &): Assertion `Outputs.empty() && "Task should have no outputs."' failed.
PLEASE submit a bug report to https://github.com/OpenCilk/opencilk-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /home/ubuntu/opencilkv2rc2_build/bin/clang-14 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name main.cpp -mrelocation-model static -mframe-pointer=all -menable-no-infs -menable-no-nans -fmath-errno -fno-signed-zeros -freciprocal-math -ffp-contract=fast -fno-rounding-math -ffp-exception-behavior=ignore -ffinite-math-only -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/ubuntu/ConcurrentHashMap -fprofile-update=atomic -resource-dir /home/ubuntu/opencilkv2rc2_build/lib/clang/14.0.6 -D OPENMP=0 -D CILK=1 -D ENABLE_TRACE_TIMER=1 -D VERIFY=0 -D PARALLEL=1 -D NDEBUG -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /home/ubuntu/opencilkv2rc2_build/lib/clang/14.0.6/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -Wall -Wextra -std=c++17 -fdeprecated-macro -fdebug-compilation-dir=/home/ubuntu/ConcurrentHashMap -ferror-limit 19 -fopencilk --opencilk-abi-bitcode=/home/ubuntu/opencilkv2rc2_build/lib/clang/14.0.6/lib/x86_64-unknown-linux-gnu/libopencilk-abi.bc -fsanitize=thread,cilk,alignment,array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,null,object-size,pointer-overflow,return,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,unreachable,vla-bound,vptr -fsanitize-recover=alignment,array-bounds,bool,builtin,enum,float-cast-overflow,function,integer-divide-by-zero,nonnull-attribute,null,object-size,pointer-overflow,returns-nonnull-attribute,shift-base,shift-exponent,signed-integer-overflow,vla-bound,vptr -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -stripmine-loops -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/main-92f99c.o -x c++ main.cpp

  1.  <eof> parser at end of file
    
  2.  Optimizer
    

#0 0x0000000002005e43 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2005e43)
#1 0x0000000002003b6e llvm::sys::RunSignalHandlers() (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2003b6e)
#2 0x00000000020062ff SignalHandler(int) Signals.cpp:0:0
#3 0x00007fda8dd533c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x00007fda8d7ae03b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fda8d78d859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007fda8d78d729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007fda8d78d729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007fda8d79f006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
#9 0x000000000202d7c0 llvm::findAllTaskInputs(llvm::Function&, llvm::DominatorTree const&, llvm::TaskInfo const&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x202d7c0)
#10 0x000000000201aef2 (anonymous namespace)::LoopSpawningImpl::outlineAllTapirLoops() LoopSpawningTI.cpp:0:0
#11 0x0000000002018e62 (anonymous namespace)::LoopSpawningImpl::run() LoopSpawningTI.cpp:0:0
#12 0x0000000002017d9c llvm::LoopSpawningPass::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2017d9c)
#13 0x000000000318417d llvm::detail::PassModel<llvm::Module, llvm::LoopSpawningPass, llvm::PreservedAnalyses, llvm::AnalysisManagerllvm::Module >::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x318417d)
#14 0x000000000185bc84 llvm::PassManager<llvm::Module, llvm::AnalysisManagerllvm::Module >::run(llvm::Module&, llvm::AnalysisManagerllvm::Module&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x185bc84)
#15 0x000000000235349a (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_deletellvm::raw_pwrite_stream >&, std::unique_ptr<llvm::ToolOutputFile, std::default_deletellvm::ToolOutputFile >&) BackendUtil.cpp:0:0
#16 0x0000000002346d61 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_deletellvm::raw_pwrite_stream >) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2346d61)
#17 0x00000000030804ef clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x30804ef)
#18 0x0000000003b7f854 clang::ParseAST(clang::Sema&, bool, bool) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x3b7f854)
#19 0x0000000002a1d1a0 clang::FrontendAction::Execute() (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2a1d1a0)
#20 0x000000000299922f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x299922f)
#21 0x0000000002ad4873 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x2ad4873)
#22 0x00000000009eb097 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x9eb097)
#23 0x00000000009e8da0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#24 0x00000000009e8b34 main (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x9e8b34)
#25 0x00007fda8d78f0b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#26 0x00000000009e5c6e _start (/home/ubuntu/opencilkv2rc2_build/bin/clang-14+0x9e5c6e)
clang-14: error: unable to execute command: Aborted (core dumped)
clang-14: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 14.0.6 (https://github.com/OpenCilk/opencilk-project 1c92142)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/ubuntu/opencilkv2rc2_build/bin
clang-14: note: diagnostic msg:


PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /tmp/main-8df80f.cpp
clang-14: note: diagnostic msg: /tmp/main-8df80f.sh
clang-14: note: diagnostic msg:


main-8df80f.sh.txt
main-8df80f.cpp.txt

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