Hello,

 

                First of all - Thanks you all for the cool product -
libunwind!

 

                I have a question and hope that your answer helps me to
solve a problem I stuck with. 

 

I use a board with ARMv5 architecture (ARM926EJ-S). I have Linux OS and a
C++ application running on that board type.  The problem is that I am not
able to get backtraces in case of abort() and exceptions which cause
abort(). If I use kill(getpid(0, SIGABRT) I get correct backtraces. The
problem is well known. So I use libunwind and works if I execute the
application on an ARMv6 board. But in case of ARMv5 it does not work for me.
I cannot get the whole traces. I tried to change methods and it fails (I've
attached the log).

 

                I use Libunwind version 1.1.

 

More info about CPU used on the board:

# cat /proc/cpuinfo

processor       : 0

model name      : ARM926EJ-S rev 5 (v5l)

BogoMIPS        : 198.76

Features        : swp half thumb fastmult edsp java

CPU implementer : 0x41

CPU architecture: 5TEJ

CPU variant     : 0x0

CPU part        : 0x926

CPU revision    : 5

Hardware        : Atmel AT91SAM (Device Tree)

 

I have a small app just to test backtrace functionality in case of
abort()/throw. I've attached test1.c.

 

I do compilation using: 

arm-buildroot-linux-gnueabi-g++ --std=c++11 -funwind-tables  -mapcs-frame
-rdynamic test1.c  -lunwind -o test1

 

 

Thanks in advance,

Andrey

 

#
#
# export UNW_ARM_UNWIND_METHOD=0
# ./test1
Received signal 6
 backtrace returned 50 frames

[bt]: (0) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (1) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (2) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (3) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (4) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (5) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (6) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (7) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (8) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (9) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (10) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (11) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (12) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (13) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (14) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (15) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (16) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (17) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (18) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (19) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (20) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (21) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (22) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (23) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (24) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (25) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (26) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (27) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (28) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (29) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (30) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (31) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (32) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (33) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (34) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (35) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (36) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (37) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (38) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (39) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (40) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (41) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (42) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (43) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (44) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (45) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (46) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (47) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (48) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]
[bt]: (49) /usr/lib/libunwind.so.8(backtrace+0x48) [0xb6f8016c]

#
# export UNW_ARM_UNWIND_METHOD=1
# ./test1
Received signal 6
 backtrace returned 0 frames


#
#
# export UNW_ARM_UNWIND_METHOD=2
# ./test1
Received signal 6
Received signal 11
Segmentation fault (core dumped)
#
#
# export UNW_ARM_UNWIND_METHOD=3
# ./test
-sh: ./test: not found
# ./test1
Received signal 6
Received signal 11
Segmentation fault (core dumped)
#
#
#
# export UNW_ARM_UNWIND_METHOD=4
# ./test1
Received signal 6
 backtrace returned 3 frames

[bt]: (0) ./test1(_Z12do_backtracei+0x50) [0x8efc]
[bt]: (1) /lib/libc.so.6(__default_sa_restorer+0) [0xb6c21290]
[bt]: (2) /lib/libc.so.6(gsignal+0x34) [0xb6c1fff8]

#

Attachment: test1.c
Description: Binary data

_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to