Closed PappasBrent closed 5 days ago
Ubuntu clang version 18.1.8 (++20240615103753+3b5b5c1ec4a3-1~exp1~20240615223858.136) Target: x86_64-pc-linux-gnu Thread model: posix
1:18.1.8
Ubuntu 22.04.4 LTS x86_64
vast-front crashes with the following stack trace when attempting to lower a program containing a switch-case statement with a fallthrough attribute:
vast-front
[VAST assert] next != nullptr && "try_visit_or_pass" failed PLEASE submit a bug report to https://github.com/trailofbits/vast/issues and include the crash backtrace, preprocessed source, and associated run script. Stack dump: 0. Program arguments: ./builds/default/tools/vast-front/Debug/vast-front -x c -vast-emit-mlir=hl test_fallthrough.c 1. <eof> parser at end of file #0 0x00007f1e141a3716 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/lib/libLLVM.so.18.1+0xd94716) #1 0x00007f1e141a16d0 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/lib/libLLVM.so.18.1+0xd926d0) #2 0x00007f1e140f31f0 (/usr/lib/llvm-18/lib/libLLVM.so.18.1+0xce41f0) #3 0x00007f1e12e91520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520) #4 0x0000555bc923753b auto vast::cg::try_or_through_list_node<vast::cg::unsup_visitor>::try_visit_or_pass<clang::Stmt const*&, vast::cg::scope_context&>(clang::Stmt const*&, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:162:13 #5 0x0000555bc9232975 vast::cg::try_or_through_list_node<vast::cg::unsup_visitor>::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:167:82 #6 0x0000555bc923128e auto vast::cg::try_or_through_list_node<vast::cg::default_visitor>::try_visit_or_pass<clang::Stmt const*&, vast::cg::scope_context&>(clang::Stmt const*&, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:163:13 #7 0x0000555bc92302c5 vast::cg::try_or_through_list_node<vast::cg::default_visitor>::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:167:82 #8 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #9 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #10 0x0000555bc922ae42 vast::cg::visitor_list::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:103:82 #11 0x0000555bc92389e9 vast::cg::visitor_view::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:15:9 #12 0x0000555bc9238b31 vast::cg::scoped_visitor_view::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:39:9 #13 0x0000555bc92e23e4 vast::cg::block_generator::emit(clang::CompoundStmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenBlock.cpp:19:21 #14 0x0000555bc929010e vast::cg::default_stmt_visitor::VisitCompoundStmt(clang::CompoundStmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultStmtVisitor.cpp:102:9 #15 0x0000555bc9246fba clang::StmtVisitorBase<llvm::make_const_ptr, vast::cg::default_stmt_visitor, mlir::Operation*>::Visit(clang::Stmt const*) /usr/lib/llvm-18/include/clang/AST/StmtNodes.inc:1498:1 #16 0x0000555bc92439bd vast::cg::default_stmt_visitor::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/DefaultStmtVisitor.hpp:23:50 #17 0x0000555bc9243956 vast::cg::default_visitor::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultVisitor.cpp:20:9 #18 0x0000555bc92311f0 auto vast::cg::try_or_through_list_node<vast::cg::default_visitor>::try_visit_or_pass<clang::Stmt const*&, vast::cg::scope_context&>(clang::Stmt const*&, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:158:22 #19 0x0000555bc92302c5 vast::cg::try_or_through_list_node<vast::cg::default_visitor>::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:167:82 #20 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #21 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #22 0x0000555bc922ae42 vast::cg::visitor_list::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:103:82 #23 0x0000555bc92389e9 vast::cg::visitor_view::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:15:9 #24 0x0000555bc9238b31 vast::cg::scoped_visitor_view::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:39:9 #25 0x0000555bc92a8073 auto vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(auto&, auto)::operator()<mlir::OpBuilder, mlir::Location>(auto&, auto) const /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/ClangVisitorBase.hpp:77:13 #26 0x0000555bc92a801d void llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>::callback_fn<vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(auto&, auto) const>(long, mlir::OpBuilder&, mlir::Location) /usr/lib/llvm-18/include/llvm/ADT/STLFunctionalExtras.h:45:5 #27 0x0000555bc94da5e1 llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>::operator()(mlir::OpBuilder&, mlir::Location) const /usr/lib/llvm-18/include/llvm/ADT/STLFunctionalExtras.h:68:5 #28 0x0000555bc94da53a vast::build_region(mlir::Region*, mlir::OpBuilder&, mlir::OperationState&, llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>) /home/bpappas/github.com/trailofbits/vast/lib/vast/Util/Region.cpp:25:16 #29 0x0000555bc94da489 vast::build_region(mlir::OpBuilder&, mlir::OperationState&, llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>) /home/bpappas/github.com/trailofbits/vast/lib/vast/Util/Region.cpp:12:9 #30 0x0000555bc8f5395f vast::hl::SwitchOp::build(mlir::OpBuilder&, mlir::OperationState&, llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>, llvm::function_ref<void (mlir::OpBuilder&, mlir::Location)>) /home/bpappas/github.com/trailofbits/vast/lib/vast/Dialect/HighLevel/HighLevelOps.cpp:576:9 #31 0x0000555bc92a8c7f auto mlir::OpBuilder::create<vast::hl::SwitchOp, auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(auto&, auto) const&, vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(auto&, auto) const&>(mlir::Location, auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(auto&, auto) const&, vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(auto&, auto) const&) /usr/lib/llvm-18/include/mlir/IR/Builders.h:494:5 #32 0x0000555bc92a8b6b auto auto vast::cg::codegen_builder::compose<vast::hl::SwitchOp>()::'lambda'(auto&&...)::operator()<mlir::Location const, auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(auto&, auto) const&, vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(auto&, auto) const&>(auto&&...) const /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenBuilder.hpp:260:24 #33 0x0000555bc92a8add auto auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::codegen_builder::compose<vast::hl::SwitchOp>()::'lambda'(auto&&...)>::bind<mlir::Location>(std::optional<mlir::Location>&&) &&::'lambda'(auto&&...)::operator()<auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(mlir::Location&, auto) const&, vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(mlir::Location&, auto) const&>(auto&&...) const /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenBuilder.hpp:57:24 #34 0x0000555bc92a8a34 auto auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::codegen_builder::compose<vast::hl::SwitchOp>()::'lambda'(auto&&...)>::bind<mlir::Location>(std::optional<mlir::Location>&&) &&::'lambda'(auto&&...)>::bind_always<auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(mlir::Location&, auto)>(auto&&...) &&::'lambda'(auto&&...)::operator()<vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(mlir::Location&, auto) const&>(auto&&...) const /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenBuilder.hpp:65:24 #35 0x0000555bc92a89fc auto auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::codegen_builder::compose<vast::hl::SwitchOp>()::'lambda'(auto&&...)>::bind<mlir::Location>(std::optional<mlir::Location>&&) &&::'lambda'(auto&&...)>::bind_always<auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(mlir::Location&, auto)>(auto&&...) &&::'lambda'(auto&&...)>::bind_always<vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(mlir::Location&, auto)>(auto&&...) &&::'lambda'(auto&&...)::operator()<>(auto&&...) const /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenBuilder.hpp:65:24 #36 0x0000555bc9299355 vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::compose_state_t<vast::hl::SwitchOp, auto vast::cg::codegen_builder::compose<vast::hl::SwitchOp>()::'lambda'(auto&&...)>::bind<mlir::Location>(std::optional<mlir::Location>&&) &&::'lambda'(auto&&...)>::bind_always<auto vast::cg::clang_visitor_base::mk_stmt_builder<vast::hl::ValueYieldOp>(clang::Stmt const*)::'lambda'(mlir::Location&, auto)>(auto&&...) &&::'lambda'(auto&&...)>::bind_always<vast::cg::clang_visitor_base::mk_optional_region_builder(clang::Stmt const*)::'lambda'(mlir::Location&, auto)>(auto&&...) &&::'lambda'(auto&&...)>::freeze() /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenBuilder.hpp:162:32 #37 0x0000555bc92990b0 vast::cg::default_stmt_visitor::VisitSwitchStmt(clang::SwitchStmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultStmtVisitor.cpp:739:14 #38 0x0000555bc9246738 clang::StmtVisitorBase<llvm::make_const_ptr, vast::cg::default_stmt_visitor, mlir::Operation*>::Visit(clang::Stmt const*) /usr/lib/llvm-18/include/clang/AST/StmtNodes.inc:864:1 #39 0x0000555bc92439bd vast::cg::default_stmt_visitor::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/DefaultStmtVisitor.hpp:23:50 #40 0x0000555bc9243956 vast::cg::default_visitor::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultVisitor.cpp:20:9 #41 0x0000555bc92311f0 auto vast::cg::try_or_through_list_node<vast::cg::default_visitor>::try_visit_or_pass<clang::Stmt const*&, vast::cg::scope_context&>(clang::Stmt const*&, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:158:22 #42 0x0000555bc92302c5 vast::cg::try_or_through_list_node<vast::cg::default_visitor>::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:167:82 #43 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #44 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #45 0x0000555bc922ae42 vast::cg::visitor_list::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:103:82 #46 0x0000555bc92389e9 vast::cg::visitor_view::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:15:9 #47 0x0000555bc9238b31 vast::cg::scoped_visitor_view::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:39:9 #48 0x0000555bc92e23e4 vast::cg::block_generator::emit(clang::CompoundStmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenBlock.cpp:19:21 #49 0x0000555bc929010e vast::cg::default_stmt_visitor::VisitCompoundStmt(clang::CompoundStmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultStmtVisitor.cpp:102:9 #50 0x0000555bc9246fba clang::StmtVisitorBase<llvm::make_const_ptr, vast::cg::default_stmt_visitor, mlir::Operation*>::Visit(clang::Stmt const*) /usr/lib/llvm-18/include/clang/AST/StmtNodes.inc:1498:1 #51 0x0000555bc92439bd vast::cg::default_stmt_visitor::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/DefaultStmtVisitor.hpp:23:50 #52 0x0000555bc9243956 vast::cg::default_visitor::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/DefaultVisitor.cpp:20:9 #53 0x0000555bc92311f0 auto vast::cg::try_or_through_list_node<vast::cg::default_visitor>::try_visit_or_pass<clang::Stmt const*&, vast::cg::scope_context&>(clang::Stmt const*&, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:158:22 #54 0x0000555bc92302c5 vast::cg::try_or_through_list_node<vast::cg::default_visitor>::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:167:82 #55 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #56 0x0000555bc922bda2 vast::cg::fallthrough_list_node::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:125:82 #57 0x0000555bc922ae42 vast::cg::visitor_list::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/CodeGenVisitorList.hpp:103:82 #58 0x0000555bc92389e9 vast::cg::visitor_view::visit(clang::Stmt const*, vast::cg::scope_context&) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:15:9 #59 0x0000555bc9238b31 vast::cg::scoped_visitor_view::visit(clang::Stmt const*) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenVisitorBase.cpp:39:9 #60 0x0000555bc9287b3c vast::cg::function_generator::emit_body(clang::FunctionDecl const*, vast::hl::FuncOp) /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenFunction.cpp:125:21 #61 0x0000555bc928b3aa vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0::operator()() /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenFunction.cpp:87:17 #62 0x0000555bc928b305 void std::__invoke_impl<void, vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0&>(std::__invoke_other, vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:7 #63 0x0000555bc928b2c5 std::enable_if<is_invocable_r_v<void, vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0&>, void>::type std::__invoke_r<void, vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0&>(vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:117:5 #64 0x0000555bc928b19d std::_Function_handler<void (), vast::cg::function_generator::emit(clang::FunctionDecl const*)::$_0>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:290:2 #65 0x0000555bc9225145 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:2 #66 0x0000555bc9224fd5 vast::cg::scope_context::finalize() /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/ScopeContext.hpp:143:17 #67 0x0000555bc9225025 vast::cg::scope_context::finalize() /home/bpappas/github.com/trailofbits/vast/include/vast/CodeGen/ScopeContext.hpp:148:34 #68 0x0000555bc923872d vast::cg::module_generator::finalize() /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenModule.cpp:26:61 #69 0x0000555bc921b8b0 vast::cg::driver::finalize() /home/bpappas/github.com/trailofbits/vast/lib/vast/CodeGen/CodeGenDriver.cpp:70:19 #70 0x0000555bc9213076 vast::cc::vast_consumer::HandleTranslationUnit(clang::ASTContext&) /home/bpappas/github.com/trailofbits/vast/lib/vast/Frontend/Consumer.cpp:67:5 #71 0x0000555bc92138f7 vast::cc::vast_stream_consumer::HandleTranslationUnit(clang::ASTContext&) /home/bpappas/github.com/trailofbits/vast/lib/vast/Frontend/Consumer.cpp:125:15 #72 0x00007f1e1b5bdfc6 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0xb7ffc6) #73 0x0000555bc8debb75 vast::cc::vast_stream_action::ExecuteAction() /home/bpappas/github.com/trailofbits/vast/lib/vast/Frontend/Action.cpp:75:5 #74 0x00007f1e1d3eeab5 clang::FrontendAction::Execute() (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x29b0ab5) #75 0x00007f1e1d368084 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x292a084) #76 0x0000555bc8dd3a87 vast::cc::execute_compiler_invocation(clang::CompilerInstance*, vast::cc::vast_args const&) /home/bpappas/github.com/trailofbits/vast/tools/vast-front/compiler_invocation.cpp:101:28 #77 0x0000555bc8de8180 vast::cc::cc1(vast::cc::vast_args const&, llvm::ArrayRef<char const*>, char const*, void*) /home/bpappas/github.com/trailofbits/vast/tools/vast-front/cc1.cpp:116:23 #78 0x0000555bc8dd91b4 execute_cc1_tool(llvm::SmallVectorImpl<char const*>&) /home/bpappas/github.com/trailofbits/vast/tools/vast-front/driver.cpp:71:16 #79 0x0000555bc8de418d int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<int (*)(llvm::SmallVectorImpl<char const*>&)>(long, llvm::SmallVectorImpl<char const*>&) /usr/lib/llvm-18/include/llvm/ADT/STLFunctionalExtras.h:45:5 #80 0x00007f1e1d0205c9 (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x25e25c9) #81 0x00007f1e140f2f8c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/lib/libLLVM.so.18.1+0xce3f8c) #82 0x00007f1e1d01ff5e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x25e1f5e) #83 0x00007f1e1cfe84d1 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x25aa4d1) #84 0x00007f1e1cfe871e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x25aa71e) #85 0x00007f1e1d004d2d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/llvm-18/lib/libclang-cpp.so.18.1+0x25c6d2d) #86 0x0000555bc8dd984a vast::cc::driver::execute() /home/bpappas/github.com/trailofbits/vast/include/vast/Frontend/Driver.hpp:180:30 #87 0x0000555bc8dd8848 main /home/bpappas/github.com/trailofbits/vast/tools/vast-front/driver.cpp:161:19 #88 0x00007f1e12e78d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #89 0x00007f1e12e78e40 call_init ./csu/../csu/libc-start.c:128:20 #90 0x00007f1e12e78e40 __libc_start_main ./csu/../csu/libc-start.c:379:5 #91 0x0000555bc8dd2485 _start (./builds/default/tools/vast-front/Debug/vast-front+0xe48485) vast-front: error: clang frontend command failed with exit code 132 (use -v to see invocation) Ubuntu clang version 18.1.8 (++20240615103753+3b5b5c1ec4a3-1~exp1~20240615223858.136) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /home/bpappas/github.com/trailofbits/vast/./builds/default/tools/vast-front/Debug vast-front: error: unable to execute command: Illegal instruction (core dumped) vast-front: note: diagnostic msg: Error generating preprocessed source(s).
I have confirmed that this issue occurs when running both the release and debug version of vast-front.
Create a file test_fallthrough.c with the following contents:
test_fallthrough.c
int main(void) { int x; switch (x) { case 0: (void)x; [[fallthrough]]; default: break; } return 0; }
Run vast-front on the file like so:
vast-front -x c -vast-emit-mlir=hl test.c
I fixed the bug that manifested in a crash, however I did not add support for the attribute in hl, that should be a separate issue.
hl
VAST version
Ubuntu clang version 18.1.8 (++20240615103753+3b5b5c1ec4a3-1~exp1~20240615223858.136) Target: x86_64-pc-linux-gnu Thread model: posix
LLVM version
1:18.1.8
Operating system
Ubuntu 22.04.4 LTS x86_64
Description
vast-front
crashes with the following stack trace when attempting to lower a program containing a switch-case statement with a fallthrough attribute:Steps to Reproduce
I have confirmed that this issue occurs when running both the release and debug version of
vast-front
.Steps to Reproduce
Create a file
test_fallthrough.c
with the following contents:Run
vast-front
on the file like so: