[PATCH] D64971: [SafeStack] Insert the deref after the offset
Petr Hosek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 23 15:15:16 PDT 2019
phosek added a comment.
It seems like this change has introduced a crash in our build. I obtained the following stack trace:
invalid expression
!DIExpression(16, 537, 28, 4096, 456, 8, 6)
clang: /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/MachineInstr.cpp:2034: llvm::MachineInstrBuilder llvm::BuildMI(llvm::MachineFunction &, const llvm::DebugLoc &, const llvm::MCInstrDesc &, bool, llvm::MachineOperand &, const llvm::MDNode *, const llvm::MDNode *): Assertion `cast<DIExpression>(Expr)->isValid() && "not an expression"' failed.
Stack dump:
0. Program arguments: ./bin/clang -cc1 -triple x86_64-fuchsia -emit-obj --mrelax-relocations -disable-free -main-file-name nir_opt_if.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mthread-model posix -mframe-pointer=none -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-feature +cx16 -dwarf-column-info -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -ffunction-sections -fdata-sections -coverage-notes-file /b/s/w/ir/k/out/default/obj/third_party/mesa/src/compiler/nir/nir.nir_opt_if.gcno -sys-header-deps -D _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D NDEBUG=1 -D _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -D STDC_HEADERS=1 -D HAVE_SYS_TYPES_H=1 -D HAVE_SYS_STAT_H=1 -D HAVE_STDLIB_H=1 -D HAVE_STRING_H=1 -D HAVE_MEMORY_H=1 -D HAVE_STRINGS_H=1 -D HAVE_INTTYPES_H=1 -D HAVE_STDINT_H=1 -D HAVE_TIMESPEC_GET=1 -D HAVE_UNISTD_H=1 -D HAVE_DLFCN_H=1 -D YYTEXT_POINTER=1 -D HAVE___BUILTIN_BSWAP32=1 -D HAVE___BUILTIN_BSWAP64=1 -D HAVE___BUILTIN_CLZ=1 -D HAVE___BUILTIN_CLZLL=1 -D HAVE___BUILTIN_CTZ=1 -D HAVE___BUILTIN_EXPECT=1 -D HAVE___BUILTIN_FFS=1 -D HAVE___BUILTIN_FFSLL=1 -D HAVE___BUILTIN_POPCOUNT=1 -D HAVE___BUILTIN_POPCOUNTLL=1 -D HAVE___BUILTIN_UNREACHABLE=1 -D HAVE_FUNC_ATTRIBUTE_CONST=1 -D HAVE_FUNC_ATTRIBUTE_FLATTEN=1 -D HAVE_FUNC_ATTRIBUTE_FORMAT=1 -D HAVE_FUNC_ATTRIBUTE_MALLOC=1 -D HAVE_FUNC_ATTRIBUTE_PACKED=1 -D HAVE_FUNC_ATTRIBUTE_PURE=1 -D HAVE_FUNC_ATTRIBUTE_UNUSED=1 -D HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT=1 -D HAVE_FUNC_ATTRIBUTE_NORETURN=1 -D HAVE_DLADDR=1 -D HAVE_DL_ITERATE_PHDR=1 -D HAVE_CLOCK_GETTIME=1 -D PACKAGE_NAME="Mesa" -D PACKAGE_TARNAME="mesa" -D PACKAGE_VERSION="19.1.0" -D PACKAGE_STRING="Mesa 19.1.0" -D PACKAGE_BUGREPORT="https://bugs.freedesktop.org/enter_bug.cgi\?product=Mesa" -D PACKAGE_URL="" -D PACKAGE="mesa" -D VERSION="19.1.0" -D _DEFAULT_SOURCE -D _GNU_SOURCE=1 -D _DEFAULT_SOURCE -D HAVE_PTHREAD=1 -O3 -Wall -Wextra -Wnewline-eof -Wno-unused-parameter -Werror -Wno-error=deprecated-declarations -Wall -Wno-missing-field-initializers -Wno-initializer-overrides -Wno-sign-compare -Wno-overloaded-virtual -Wno-absolute-value -Wno-missing-braces -Wno-unused-function -Wno-mismatched-tags -Wno-enum-conversion -Wno-unused-variable -Wno-unused-private-field -Wno-sometimes-uninitialized -Wno-incompatible-pointer-types-discards-qualifiers -Wno-unused-label -Wno-switch -Wno-gnu-variable-sized-type-not-at-end -Wno-extra-semi -Wno-newline-eof -std=c11 -fdebug-prefix-map=/b/s/w/ir/k/out/default=. -fdebug-prefix-map=/b/s/w/ir/k/out=.. -fdebug-prefix-map=/b/s/w/ir/k=../.. -ferror-limit 19 -fmessage-length 0 -fvisibility hidden -fsanitize=safe-stack -stack-protector 2 -ftrivial-auto-var-init=pattern -fobjc-runtime=gcc -fno-common -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -x c nir_opt_if-63c469.c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'nir_opt_if-63c469.c'.
4. Running pass 'Virtual Register Rewriter' on function '@opt_if_cf_list'
#0 0x00000000073a0627 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:533:11
#1 0x00000000073a0719 PrintStackTraceSignalHandler(void*) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:594:1
#2 0x000000000739f15b llvm::sys::RunSignalHandlers() /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/Support/Signals.cpp:67:5
#3 0x00000000073a0d88 SignalHandler(int) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:385:1
#4 0x00007f38a40fd3a0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x123a0)
#5 0x00007f38a318bcfb raise (/lib/x86_64-linux-gnu/libc.so.6+0x36cfb)
#6 0x00007f38a31768ad abort (/lib/x86_64-linux-gnu/libc.so.6+0x218ad)
#7 0x00007f38a317677f (/lib/x86_64-linux-gnu/libc.so.6+0x2177f)
#8 0x00007f38a3184542 (/lib/x86_64-linux-gnu/libc.so.6+0x2f542)
#9 0x000000000650cee9 llvm::BuildMI(llvm::MachineFunction&, llvm::DebugLoc const&, llvm::MCInstrDesc const&, bool, llvm::MachineOperand&, llvm::MDNode const*, llvm::MDNode const*) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/MachineInstr.cpp:2035:3
#10 0x000000000650d1f6 llvm::BuildMI(llvm::MachineBasicBlock&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, llvm::DebugLoc const&, llvm::MCInstrDesc const&, bool, llvm::MachineOperand&, llvm::MDNode const*, llvm::MDNode const*) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/MachineInstr.cpp:2065:22
#11 0x00000000067910bd (anonymous namespace)::UserValue::insertDebugValue(llvm::MachineBasicBlock*, llvm::SlotIndex, llvm::SlotIndex, DbgValueLocation, bool, unsigned int, llvm::LiveIntervals&, llvm::TargetInstrInfo const&, llvm::TargetRegisterInfo const&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1318:5
#12 0x00000000067907b7 (anonymous namespace)::UserValue::emitDebugValues(llvm::VirtRegMap*, llvm::LiveIntervals&, llvm::TargetInstrInfo const&, llvm::TargetRegisterInfo const&, llvm::DenseMap<unsigned int, unsigned int, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, unsigned int> > const&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1360:19
#13 0x00000000067884bf (anonymous namespace)::LDVImpl::emitDebugValues(llvm::VirtRegMap*) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1394:24
#14 0x0000000006788317 llvm::LiveDebugVariables::emitDebugValues(llvm::VirtRegMap*) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1410:1
#15 0x0000000006812b44 (anonymous namespace)::VirtRegRewriter::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/VirtRegMap.cpp:258:37
#16 0x00000000064fe61f llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:8
#17 0x00000000069e173c llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1648:23
#18 0x00000000069e1b9f llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1685:16
#19 0x00000000069e2334 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1750:23
#20 0x00000000069e1e58 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1863:16
#21 0x00000000069e28d1 llvm::legacy::PassManager::run(llvm::Module&) /usr/local/google/home/phosek/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1894:3
#22 0x00000000076e3c0c (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream> >) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:903:3
#23 0x00000000076e031c clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream> >) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1502:5
#24 0x0000000008198a02 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:303:7
#25 0x000000000a0deb9e clang::ParseAST(clang::Sema&, bool, bool) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:178:12
#26 0x0000000008004652 clang::ASTFrontendAction::ExecuteAction() /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1043:1
#27 0x0000000008195fec clang::CodeGenAction::ExecuteAction() /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1060:1
#28 0x0000000008004028 clang::FrontendAction::Execute() /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:938:7
#29 0x0000000007f3936f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:944:23
#30 0x0000000008185b36 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:291:8
#31 0x000000000471e69f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/tools/driver/cc1_main.cpp:249:13
#32 0x000000000471146f ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/tools/driver/driver.cpp:309:5
#33 0x0000000004710814 main /usr/local/google/home/phosek/clang-llvm/llvm-project/clang/tools/driver/driver.cpp:381:5
#34 0x00007f38a317852b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2352b)
#35 0x000000000471002a _start (./bin/clang+0x471002a)
I'm still debugging this, but if you have any ideas what's the problem, I'd appreciate any pointers.
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64971/new/
https://reviews.llvm.org/D64971
More information about the llvm-commits
mailing list