|
From: | John Knight |
Subject: | Problems getting a stack backtrace with libunwind on arm platform |
Date: | Tue, 12 May 2020 23:55:10 +0000 |
Hi All, We are having problems getting a stack backtrace using libunwind on arm-based embedded Linux platform. I have updated libunwind to version 1.4.0 and when we get a SIG 11 fault, I see the following backtrace: com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: start
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #1 ip=0x00000000000220d4 sp=0x00000000b62969c0 name=CcspTr069PaSsp_GetCustomForcedInformParams + 0x85bc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #2 ip=0x00000000000227a4 sp=0x00000000b62969c8 name=sig_handler + 0x304
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #3 ip=0x00000000b684faec sp=0x00000000b62969f8 name=_setjmp + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #4 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #5 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #6 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #7 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #8 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #9 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #10 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: #11 ip=0x0000000000000000 sp=0x00000000b6296ce8 name= + 0xc
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: Maximum backtrace level reached
com.cisco.spvtg.ccsp.tr069pa: BACKTRACE: done
com.cisco.spvtg.ccsp.tr069pa: Signal 11 received, exiting!
Please note the IP address before the setjmp is a 0x0. I had added the Maximum backtrace level reached because if I did not have this, the backtrace function would continue indefinitely spewing out records with IP=0. I have a couple of questions… I had read somewhere that signal handlers actually switch stacks to handle the signal. Is this true? If so, how does libunwind find the application’s stack? Secondly, if I see a 0 IP address on the backtrace, what does this mean? Clearly a 0 return address is not valid. Lastly, if I run the backtrace with an application that is not built with debug enabled, will libunwind still generate a valid backtrace? My understanding is the optimizer does optimize out some code dealing with the stack frame… but hopefully not so much that a stack backtrace cannot be achieved. I do understand that symbols may not be available in a non-debug image. If anyone has any ideas on what is happening with this, I would really appreciate your thoughts and suggestions on how to fix this. Thanks! John Knight Sent from Mail for Windows 10 |
[Prev in Thread] | Current Thread | [Next in Thread] |