Open kaadam opened 6 months ago
Hi Everyone,
When I ran perf2bolt with '--debug' I've got segmentation fault when 'MCInst.dump()' is called in 'computeLocalUDChain' function.
Perf2bolt cmd:
perf2bolt -p perf.data -o perf.fdata bubble_sort_clang_arm64 -nl --debug
Issue:
Dumping Bcc Now updating for: <MCInst 1865 <MCOperand Imm:0> <MCOperand Expr:(.Ltmp119)> <MCOperand Inst:(<MCInst #0 0x0000aaaac3492b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22 #1 0x0000aaaac3492f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1 #2 0x0000aaaac34906c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20 #3 0x0000aaaac3492388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1 #4 0x0000ffffa50a18f8 (linux-vdso.so.1+0x8f8) #5 0x0000aaaac25642b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39 #6 0x0000aaaac30b3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33 #7 0x0000aaaac30b3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11 #8 0x0000aaaac30b3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3 #9 0x0000aaaac30b418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7 #10 0x0000aaaac3f64b5c (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:828:23 #11 0x0000aaaac3f64e0c (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:872:53 #12 0x0000aaaac3fff160 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64 #13 0x0000aaaac400084c llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28 #14 0x0000aaaac4001c80 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13 #15 0x0000aaaac358f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20 #16 0x0000aaaac3581d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24 #17 0x0000aaaac253a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29 #18 0x0000ffffa4a773fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc) #19 0x0000ffffa4a774cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc) #20 0x0000aaaac2539830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830) PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Dumping CBZX Now updating for: <MCInst 1897 <MCOperand Reg:236> <MCOperand Expr:(.Ltmp119)> <MCOperand Inst:(<MCInst #0 0x0000aaaae6fe2b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22 #1 0x0000aaaae6fe2f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1 #2 0x0000aaaae6fe06c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20 #3 0x0000aaaae6fe2388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1 #4 0x0000ffff9b4ca8f8 (linux-vdso.so.1+0x8f8) #5 0x0000aaaae60b42b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39 #6 0x0000aaaae6c03f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33 #7 0x0000aaaae6c03d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11 #8 0x0000aaaae6c03f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3 #9 0x0000aaaae6c0418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7 #10 0x0000aaaae7ab4bd4 (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:832:23 #11 0x0000aaaae7ab4e84 (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:876:53 #12 0x0000aaaae7b4f1d8 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64 #13 0x0000aaaae7b508c4 llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28 #14 0x0000aaaae7b51cf8 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13 #15 0x0000aaaae70df130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20 #16 0x0000aaaae70d1d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24 #17 0x0000aaaae608a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29 #18 0x0000ffff9aea73fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc) #19 0x0000ffff9aea74cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc) #20 0x0000aaaae6089830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830) PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Dumping CBNZX: Now updating for: <MCInst 1895 <MCOperand Reg:248> <MCOperand Expr:(.Ltmp544)> <MCOperand Inst:(<MCInst #0 0x0000aaaace082b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22 #1 0x0000aaaace082f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1 #2 0x0000aaaace0806c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20 #3 0x0000aaaace082388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1 #4 0x0000ffff984728f8 (linux-vdso.so.1+0x8f8) #5 0x0000aaaacd1542b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39 #6 0x0000aaaacdca3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33 #7 0x0000aaaacdca3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11 #8 0x0000aaaacdca3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3 #9 0x0000aaaacdca418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7 #10 0x0000aaaaceb54bec (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:832:23 #11 0x0000aaaaceb54e9c (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:876:53 #12 0x0000aaaacebef1f0 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64 #13 0x0000aaaacebf08dc llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28 #14 0x0000aaaacebf1d10 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13 #15 0x0000aaaace17f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20 #16 0x0000aaaace171d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24 #17 0x0000aaaacd12a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29 #18 0x0000ffff97e473fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc) #19 0x0000ffff97e474cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc) #20 0x0000aaaacd129830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
Dumping TBNZW Now updating for: <MCInst 7060 <MCOperand Reg:204> <MCOperand Imm:0> <MCOperand Expr:(.Ltmp542)> <MCOperand Inst:(<MCInst #0 0x0000aaaab3ca2b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22 #1 0x0000aaaab3ca2f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1 #2 0x0000aaaab3ca06c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20 #3 0x0000aaaab3ca2388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1 #4 0x0000ffff9b7e48f8 (linux-vdso.so.1+0x8f8) #5 0x0000aaaab2d742b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39 #6 0x0000aaaab38c3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33 #7 0x0000aaaab38c3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11 #8 0x0000aaaab38c3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3 #9 0x0000aaaab38c418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7 #10 0x0000aaaab4774bfc (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:833:23 #11 0x0000aaaab4774eac (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:877:53 #12 0x0000aaaab48111fc llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64 #13 0x0000aaaab48128e8 llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28 #14 0x0000aaaab4813d1c llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13 #15 0x0000aaaab3d9f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20 #16 0x0000aaaab3d91d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24 #17 0x0000aaaab2d4a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29 #18 0x0000ffff9b1c73fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc) #19 0x0000ffff9b1c74cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc) #20 0x0000aaaab2d49830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
Example:
clang bubblesort.c -o bubble_sort_clang_arm64 --target=aarch64-linux -fuse-ld=lld -flto=thin -O2 -static -Wl,--emit-relocs
perf record -e cycles:u -- bubble_sort_clang_arm64
#include <stdio.h> #include <stdlib.h> void swap(int* xp, int* yp) { int temp = *xp; *xp = *yp; *yp = temp; } void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i < n - 1; i++) for (j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) swap(&arr[j], &arr[j + 1]); } void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); } void fillUp(int* array , int size) { for (int i=0; i < size; ++i) { *(array+i) = rand() % 1000000; } } int main() { int arr_new[100000]; srand((unsigned) 41); fillUp(&arr_new[0], 100000); bubbleSort(arr_new, 100000); return 0; }
Hello. Please provide archive with binary and perf file.
Hi @yota9, yes, I forgot to enclose the example, sorry. example.tar.gz
Hi Everyone,
When I ran perf2bolt with '--debug' I've got segmentation fault when 'MCInst.dump()' is called in 'computeLocalUDChain' function.
Perf2bolt cmd:
Issue:
Example: