-
Notifications
You must be signed in to change notification settings - Fork 50
Developer notes
Tianhao Wang edited this page May 23, 2024
·
2 revisions
- launch quark container, add
--pid=host
to the docker command - in the host (
-f
is to follow forks)sudo strace -f -p $(pidof quark_d)
- optionally, exclude the
epoll_wait
syscall because it's too noisy, or filter syscalls of interests. Note thatstrace
outputs tostderr
so you may need to redirectstderr
tostdout
sudo strace -f -p $(pidof quark_d) 2>&1 | grep -v epoll_wait
(copied from #1267)
for this, you need
-
rustfilt to demangle the symbols, you can install it via
cargo install rustfilt
- llvm-addr2line to map address (PC) back to ELF (and code). This comes with the llvm package and you should already have it. The name could differ, for example
llvm-addr2line-14
on our ubuntu test machine. If this is not option for you, tryaddr2line
which comes with thebinutils
to do the magic, run the following command in a terminal:
llvm-addr2line -fpipe <PATH-TO-QKERNEL-BINARY> | rustfilt
then copy paste the addresses (PC) from the backtrace frames: these are printed in the log upon panics.
0x40000e75c0
0x400020350c
0x4000203f00
0x4000071730
0x4000061404
0x4000121ce8
0x40000e6d70
0x400007cd2c
0x400009f138
Then you have it!