Issue |
84012
|
Summary |
[BOLT][AArch64] Running perf2bolt with '--debug' causes an segfault fault.
|
Labels |
BOLT
|
Assignees |
|
Reporter |
kaadam
|
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 -p 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;
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs