Skip to content

ARMC6: To get the right stack trace, use -O0 #11431

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

andrewc-arm
Copy link
Contributor

@andrewc-arm andrewc-arm commented Sep 6, 2019

Verified that -O1 does not make stack trace while -O0 does.

Description

Why required

Without this change, ARM toolchain's --profile debug build will not create stack trace. FYI, this is the gdb back trace result of -O1.

(gdb) bt
#0  generate_bus_fault_unaligned_access () at ./main.cpp:21
#1  0x000081c0 in main () at ./main.cpp:80

With -O1, this is the correct back trace acquired.

#0  generate_bus_fault_unaligned_access () at ./main.cpp:21
#1  0x000058e8 in func6 (debugP=1, param2=777) at ./main.cpp:32
#2  0x000058ba in func5 (debugP=1) at ./main.cpp:37
#3  0x000058a0 in func4 (str=0x1fff171c <_main_stack+3756> "\001") at ./main.cpp:43
#4  0x0000588a in func3 (f=0.333333343) at ./main.cpp:50
#5  0x00005870 in func2 (a=1, b=3) at ./main.cpp:55
#6  0x00005846 in func1 () at ./main.cpp:60
#7  0x00009a78 in main () at ./main.cpp:80

It looks like ARMC6's -O1 level is quite optimizing than what we expect.
FYI. Here is the related document.
http://www.keil.com/support/man/docs/ARMCC/armcc_chr1359124935804.htm

Pull request type

[x] Fix
[ ] Refactor
[ ] Target update
[ ] Functionality change
[ ] Docs update
[ ] Test update
[ ] Breaking change

Reviewers

Reference

  • Arm internal: IOTCLOUDPR-3438

Release Notes

Verified that `-O1` does not make stack trace while `-O0` does.
@0xc0170
Copy link
Contributor

0xc0170 commented Sep 6, 2019

Btw, if we change, we need to change also exporters for uvision (see #11212).

We have -g that is the same as --debug - that is what they recommend in the reference above. Using O1 with --debug.

From the reference:

Backtrace might not give the stack of open function activations that is expected from reading the source because of the presence of tailcalls.

Is this a reason for this PR? You can track it back.

From the log, we are using O1 because:

Further, Arm Compiler 5's -O0 (no optimizations) bulids will actually
do some amount of optimizing, similar to Arm Compiler 6's -O1. I have
switched the debug profile to -O1 for maximum compatibility with our
prior behavior.

Also client uses the same profiles as we now (@teetak01 updated it for 5.14) as I recall (consistency).

@kjbracey
Copy link
Contributor

kjbracey commented Sep 6, 2019

What was your example code? If this is just a tailcall issue, because your calls are so simple, I wouldn't sweat it. A real use case wouldn't tailcall that much, so I would expect a real backtrace to largely make sense. But let's see this one.

Killing tailcalls can greatly increases stack usage - I'd be wary of using a lot more stack just to make it more backtraceable.

@ciarmcom ciarmcom requested review from a team September 6, 2019 11:00
@ciarmcom
Copy link
Member

ciarmcom commented Sep 6, 2019

@andrewc-arm, thank you for your changes.
@ARMmbed/mbed-os-tools @ARMmbed/mbed-os-maintainers please review.

@andrewc-arm
Copy link
Contributor Author

andrewc-arm commented Sep 9, 2019

@kjbracey-arm and @0xc0170
I tested with this main.cpp code (main_thread_mode_crash.cpp_no_tailcall.cpp.txt) which tried to avoid tailcall and got this true backtrace and stackdump.
code used is after d8c2c6f.

< True backtrace >

(gdb) stepi
32          uint32_t val = *(uint32_t *)inv_addr;
=> 0x00005d00 <generate_bus_fault_unaligned_access()+20>:       00 68   ldr     r0, [r0, #0]
(gdb) bt
#0  generate_bus_fault_unaligned_access () at ./main.cpp:32
#1  0x00005e1c in func3 (f=0) at ./main.cpp:81
#2  0x00008364 in main () at ./main.cpp:119
(gdb) info registers
r0             0xaaa3   43683
r1             0x208    520
r2             0x0      0
r3             0x3cdedc0        63827392
r4             0x1fff17a8       536811432
r5             0x1fff1af4       536812276
r6             0x0      0
r7             0x0      0
r8             0x0      0
r9             0x0      0
r10            0x0      0
r11            0x0      0
r12            0x1fff19d8       536811992
sp             0x1fff1780       0x1fff1780 <_main_stack+3880>
lr             0x5e1d   24093
pc             0x5d00   0x5d00 <generate_bus_fault_unaligned_access()+20>
xpsr           0x61000000       1627389952
(gdb)

Please note that though I tried to avoid tailcalls I was only able to get only one level increased from the previous run.

< The stack dump >

[2019-09-09 15:32:10.867] ++ MbedOS Fault Handler ++
[2019-09-09 15:32:10.895] 
[2019-09-09 15:32:10.895] FaultType: HardFault
[2019-09-09 15:32:10.919] 
[2019-09-09 15:32:10.920] Context:
[2019-09-09 15:32:10.928] R0   : 0000AAA3
[2019-09-09 15:32:10.944] R1   : 00000208
[2019-09-09 15:32:10.961] R2   : 00000000
[2019-09-09 15:32:10.978] R3   : 03CDEDC0
[2019-09-09 15:32:10.994] R4   : 1FFF17A8
[2019-09-09 15:32:11.011] R5   : 1FFF1AF4
[2019-09-09 15:32:11.029] R6   : 00000000
[2019-09-09 15:32:11.044] R7   : 00000000
[2019-09-09 15:32:11.062] R8   : 00000000
[2019-09-09 15:32:11.079] R9   : 00000000
[2019-09-09 15:32:11.095] R10  : 00000000
[2019-09-09 15:32:11.112] R11  : 00000000
[2019-09-09 15:32:11.131] R12  : 1FFF19D8
[2019-09-09 15:32:11.145] SP   : 1FFF1780
[2019-09-09 15:32:11.162] LR   : 00005E1D (#1)
[2019-09-09 15:32:11.180] PC   : 00005D00 (#0)
[2019-09-09 15:32:11.195] xPSR : 61000000
[2019-09-09 15:32:11.212] PSP  : 1FFF1718
[2019-09-09 15:32:11.228] MSP  : 2002FFD0
[2019-09-09 15:32:11.245] CPUID: 410FC241
[2019-09-09 15:32:11.261] HFSR : 40000000
[2019-09-09 15:32:11.280] MMFSR: 00000000
[2019-09-09 15:32:11.294] BFSR : 00000000
[2019-09-09 15:32:11.312] UFSR : 00000100
[2019-09-09 15:32:11.330] DFSR : 00000010
[2019-09-09 15:32:11.344] AFSR : 00000000
[2019-09-09 15:32:11.361] Mode : Thread
[2019-09-09 15:32:11.376] Priv : Privileged
[2019-09-09 15:32:11.395] Stack: PSP
[2019-09-09 15:32:11.409] 
[2019-09-09 15:32:11.411] -- MbedOS Fault Handler --
[2019-09-09 15:32:11.441] 
[2019-09-09 15:32:11.441] 
[2019-09-09 15:32:11.441] 
[2019-09-09 15:32:11.441] ++ MbedOS Error Info ++
[2019-09-09 15:32:11.466] Error Status: 0x80FF013D Code: 317 Module: 255
[2019-09-09 15:32:11.513] Error Message: Fault exception
[2019-09-09 15:32:11.544] Location: 0x5D00
[2019-09-09 15:32:11.562] Error Value: 0x1FFF0400
[2019-09-09 15:32:11.587] Current Thread: main Id: 0x1FFF1DC0 Entry: 0x89B9 StackSize: 0x1000 StackMem: 0x1FFF0858 SP: 0x1FFF1780 
[2019-09-09 15:32:11.697] Stack Dump: PSP
[2019-09-09 15:32:11.715] 0x1FFF1780:0x1FFF1A00 0x0019F0A0 0x1FFF1A58 0x00006877 0x1FFF17A8 0x1FFF1848 0x00000000 0x00000000 
[2019-09-09 15:32:11.817] 0x1FFF17A0:0x00000000 0x00008365 (#2) 0x00000200 0x00000010 0x1FFF17C4 0x00002D8B 0x00000000 0x0000B6ED 
[2019-09-09 15:32:11.921] 0x1FFF17C0:0x1FFF19D8 0x0000B5A9 0x0000D304 0x000F4240 0x1FFF19D8 0x0000B5A9 0x0000D304 0x0000D304 
[2019-09-09 15:32:12.025] 0x1FFF17E0:0x1FFF19D8 0x00000000 0x000F423F 0x410FC241 0x00000001 0x005D6241 0x20000000 0x1FFF0000 
[2019-09-09 15:32:12.131] 0x1FFF1800:0x00000000 0x00000000 0x00030000 0x00010000 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 15:32:12.234] 0x1FFF1820:0x00000000 0x00000000 0x00100000 0x00000000 0x00000000 0x00000000 0x20000020 0x000008FB 
[2019-09-09 15:32:12.339] 0x1FFF1840:0x00002710 0x00000000 0x00005D09 0x00000000 0x00000000 0x0000C460 0x0000892C 
[2019-09-09 15:32:12.432] 
[2019-09-09 15:32:12.433] Next:
[2019-09-09 15:32:12.440] main  State: 0x2 Entry: 0x000089B9 Stack Size: 0x00001000 Mem: 0x1FFF0858 SP: 0x1FFF1818
[2019-09-09 15:32:12.532] Stack Dump: PSP
[2019-09-09 15:32:12.548] 0x1FFF1818:0x00000000 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0x00000000 0x00000000 
[2019-09-09 15:32:12.652] 0x1FFF1838:0x20000020 0x000008FB 0x00002710 0x00000000 0x00005D09 0x00000000 0x00000000 0x0000C460 
[2019-09-09 15:32:12.756] 0x1FFF1858:0x0000892C 
[2019-09-09 15:32:12.780] 
[2019-09-09 15:32:12.781] Ready:
[2019-09-09 15:32:12.790] rtx_idle  State: 0x1 Entry: 0x00009071 Stack Size: 0x00000200 Mem: 0x1FFF1E90 SP: 0x1FFF2050
[2019-09-09 15:32:12.885] Stack Dump: PSP
[2019-09-09 15:32:12.901] 0x1FFF2050:0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 15:32:13.007] 0x1FFF2070:0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00009A1D 0x00009071 0x01000000 
[2019-09-09 15:32:13.110] 0x1FFF2090:0xE25A2EA5 
[2019-09-09 15:32:13.136] 
[2019-09-09 15:32:13.136] Wait:
[2019-09-09 15:32:13.141] rtx_timer  State: 0x83 Entry: 0x0000994D Stack Size: 0x00000300 Mem: 0x1FFF2090 SP: 0x1FFF2330
[2019-09-09 15:32:13.241] Stack Dump: PSP
[2019-09-09 15:32:13.257] 0x1FFF2330:0xFFFFFFFF 0x00000000 0x1FFF2388 0x1FFF1D3C 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 15:32:13.362] 0x1FFF2350:0xFFFFFFFE 0x1FFF1D3C 0x1FFF2388 0x00000000 0x0000A961 0x00008E03 0x00008E28 0x61000000 
[2019-09-09 15:32:13.468] 0x1FFF2370:0x00008E60 0x1FFF2388 0x1FFF0568 0x00000000 0x00000000 0x0000998B 0x0000994D 0x01000000 
[2019-09-09 15:32:13.569] 0x1FFF2390:0x00000001 
[2019-09-09 15:32:13.593] 
[2019-09-09 15:32:13.594] Delay:
[2019-09-09 15:32:13.601] For more info, visit: https://mbed.com/s/error?error=0x80FF013D&osver=999999&core=0x410FC241&comp=1&ver=6120001&tgt=K64F
[2019-09-09 15:32:13.728] -- MbedOS Error Info --
[2019-09-09 15:32:13.755] 
[2019-09-09 15:32:13.755] = System will be rebooted due to a fatal error =
[2019-09-09 15:32:13.805] = Reboot count(=3) reached maximum, system will halt after rebooting

NOTE: If you search (#number) (which I manually added) you will be able to confirm that the stack dump matches with true callstack information.
All the stacks have been recovered by the stack dump, so I am OK with -O1 option. However, if I am really debugging with Keil, I would manually set this -O0 option for ease of debugging. What a normal user, at least for me, would expect from Keil debugging mode is removal of tailcall optimization.

So I am neutral since I know how to debug, but I want to receive your opinion before closing this ticket. Could you please review my example code and is this what you expect to see in debugging mode? Also, consistency with GCC_ARM and IAR should be considered, for those toolchains, tailcall feature is turned off. Either we should enable or disable tailcall for all the toolchains in debug mode.

Could you please share your opinion?

@andrewc-arm
Copy link
Contributor Author

@0xc0170

Btw, if we change, we need to change also exporters for uvision (see #11212).

I took a look at the PR you mentioned. Could you please confirm that PR also discuss about the debug mode? For release mode of Keil, I see that it's

"common": ["-c", "--target=arm-arm-none-eabi", "-mthumb", "-Oz",
-Oz option which looks like the maximum space optimzation (link).
And the PR seems to be related with exporter and maybe not so much related with debug mode? Please confirm. Thanks!

@kjbracey
Copy link
Contributor

kjbracey commented Sep 9, 2019

tried to avoid tailcall

In your example, almost every function call is an optimisable tailcall - that is a function that calls another function as the last thing it does. As far as I can tell, only func3 has no opportunity to tailcall-optimise when it passes its stack buffer to func4.

You avoid tailcalls by doing something else after calling the inner function.

There's a conflict here - between people who want to be able to routinely build a complete "debug" image and have it fit in their ROM and those who actually want to have it as debug as possible. The trend recently has been to nudge the "debug" profile to be a bit smaller. The limitations of O1 are known, and were already discussed when the O0->O1 change were made.

I also have rarely been 100% satisfied with the O1 or Og options - they're often not as good as claimed. But I understand why people had problems with O0.

I'm not convinced the existence of an in-built backtracer changes the results of the previous discussion. The results you're seeing here don't surprise me - I'm more surprised about how tailcally a test you managed to produce :)

Also, consistency with GCC_ARM and IAR should be considered, for those toolchains, tailcall feature is turned off. Either we should enable or disable tailcall for all the toolchains in debug mode.

I don't think we're making an explicit choice for that in any, are we? We're just going with each toolchain's "intermediate debug" option. That is part of the issue with choosing to do that - each chain is going to have made different choices on the compromises for their "intermediate" setting.

I would be open to having an extra "full_debug" profile, but people are always free to flip to O0 themselves. It would help if we could select different options per-file, so the debug could be targetted, keeping total image size down

@andrewc-arm
Copy link
Contributor Author

andrewc-arm commented Sep 9, 2019

Understood! Thanks for the feedback! Then all good.


BTW. I modified the example code like this and got the result I want.
main_thread_mode_crash.cpp_no_tailcall2.cpp.txt

< Real call stack >

(gdb) stepi
59          return (float)(val) + rand();
=> 0x00005dee <generate_bus_fault_unaligned_access()+26>:       90 ed 00 0a     vldr    s0, [r0]
   0x00005df2 <generate_bus_fault_unaligned_access()+30>:       b8 ee 40 8a     vcvt.f32.u32    s16, s0
   0x00005df6 <generate_bus_fault_unaligned_access()+34>:       fa f7 a9 fb     bl      0x54c <rand>
   0x00005dfa <generate_bus_fault_unaligned_access()+38>:       00 ee 10 0a     vmov    s0, r0
   0x00005dfe <generate_bus_fault_unaligned_access()+42>:       b8 ee c0 0a     vcvt.f32.s32    s0, s0
   0x00005e02 <generate_bus_fault_unaligned_access()+46>:       38 ee 00 0a     vadd.f32        s0, s16, s0
   0x00005e06 <generate_bus_fault_unaligned_access()+50>:       bd ec 02 8b     vpop    {d8}
   0x00005e0a <generate_bus_fault_unaligned_access()+54>:       80 bd   pop     {r7, pc}
(gdb) bt
#0  generate_bus_fault_unaligned_access () at ./main.cpp:59
#1  0x0000600a in func6 (debugP=<optimized out>, param2=520) at ./main.cpp:67
#2  0x00005fbc in func5 (debugP=<optimized out>) at ./main.cpp:75
#3  0x00005f6a in func4 (str=0x1fff1850 <_main_stack+3856> "") at ./main.cpp:89
#4  0x00005f1e in func3 (f=<optimized out>) at ./main.cpp:103
#5  0x00005e48 in func1 () at ./main.cpp:121
#6  0x000084ba in main () at ./main.cpp:143
(gdb) info register
r0             0xaaa3   43683
r1             0x208    520
r2             0x0      0
r3             0x3cdedc0        63827392
r4             0x1fff1850       536811600
r5             0x1fff1bdc       536812508
r6             0x0      0
r7             0x0      0
r8             0x0      0
r9             0x0      0
r10            0x0      0
r11            0x0      0
r12            0x0      0
sp             0x1fff1808       0x1fff1808 <_main_stack+3784>
lr             0x600b   24587
pc             0x5dee   0x5dee <generate_bus_fault_unaligned_access()+26>
xpsr           0x61000000       1627389952
(gdb) stepi
0x00000580 in HardFault_Handler ()
=> 0x00000580 <HardFault_Handler+0>:    4f f0 10 03     mov.w   r3, #16

< The stack dump >

[2019-09-09 17:00:05.925] ++ MbedOS Fault Handler ++
[2019-09-09 17:00:05.954] 
[2019-09-09 17:00:05.954] FaultType: HardFault
[2019-09-09 17:00:05.977] 
[2019-09-09 17:00:05.978] Context:
[2019-09-09 17:00:05.988] R0   : 0000AAA3
[2019-09-09 17:00:06.003] R1   : 00000208
[2019-09-09 17:00:06.021] R2   : 00000000
[2019-09-09 17:00:06.038] R3   : 03CDEDC0
[2019-09-09 17:00:06.053] R4   : 1FFF1850
[2019-09-09 17:00:06.070] R5   : 1FFF1BDC
[2019-09-09 17:00:06.087] R6   : 00000000
[2019-09-09 17:00:06.104] R7   : 00000000
[2019-09-09 17:00:06.120] R8   : 00000000
[2019-09-09 17:00:06.137] R9   : 00000000
[2019-09-09 17:00:06.155] R10  : 00000000
[2019-09-09 17:00:06.171] R11  : 00000000
[2019-09-09 17:00:06.188] R12  : 00000000
[2019-09-09 17:00:06.203] SP   : 1FFF1808
[2019-09-09 17:00:06.221] LR   : 0000600B (#1)
[2019-09-09 17:00:06.239] PC   : 00005DEE (#0)
[2019-09-09 17:00:06.255] xPSR : 61000000
[2019-09-09 17:00:06.271] PSP  : 1FFF17A0
[2019-09-09 17:00:06.287] MSP  : 2002FFD0
[2019-09-09 17:00:06.304] CPUID: 410FC241
[2019-09-09 17:00:06.320] HFSR : 40000000
[2019-09-09 17:00:06.338] MMFSR: 00000000
[2019-09-09 17:00:06.354] BFSR : 00000000
[2019-09-09 17:00:06.377] UFSR : 00000100
[2019-09-09 17:00:06.389] DFSR : 00000010
[2019-09-09 17:00:06.404] AFSR : 00000000
[2019-09-09 17:00:06.421] Mode : Thread
[2019-09-09 17:00:06.436] Priv : Privileged
[2019-09-09 17:00:06.453] Stack: PSP
[2019-09-09 17:00:06.466] 
[2019-09-09 17:00:06.466] -- MbedOS Fault Handler --
[2019-09-09 17:00:06.495] 
[2019-09-09 17:00:06.496] 
[2019-09-09 17:00:06.497] 
[2019-09-09 17:00:06.498] ++ MbedOS Error Info ++
[2019-09-09 17:00:06.522] Error Status: 0x80FF013D Code: 317 Module: 255
[2019-09-09 17:00:06.572] Error Message: Fault exception
[2019-09-09 17:00:06.604] Location: 0x5DEE
[2019-09-09 17:00:06.623] Error Value: 0x1FFF0400
[2019-09-09 17:00:06.648] Current Thread: main Id: 0x1FFF1EA8 Entry: 0x8B29 StackSize: 0x1000 StackMem: 0x1FFF0940 SP: 0x1FFF1808 
[2019-09-09 17:00:06.756] Stack Dump: PSP
[2019-09-09 17:00:06.775] 0x1FFF1808:0x00000000 0x00000000 0x00000000 0x0000600B (#1) 0x0000D474 0x00000000 0x00000000 0x00000000 
[2019-09-09 17:00:06.878] 0x1FFF1828:0x00000000 0x00005FBD (#2) 0x3F000000 0x00000000 0x00000000 0x00005F6B (#3) 0x3F000000 0x00000000 
[2019-09-09 17:00:06.981] 0x1FFF1848:0x1FFF1850 0x00005F1F (#4) 0x01010600 0x02030008 0x02020309 0x09040108 0x00040104 0x00050206 
[2019-09-09 17:00:07.087] 0x1FFF1868:0x1FFF1B68 0x0019F0A0 0x3F000000 0x00000000 0x1FFF1890 0x00005E49 (#5) 0x3F000000 0x00000000 
[2019-09-09 17:00:07.189] 0x1FFF1888:0x00000000 0x000084BB (#6) 0x00000200 0x00000010 0x1FFF18AC 0x00002DFB 0x00000000 0x0000B85D 
[2019-09-09 17:00:07.293] 0x1FFF18A8:0x1FFF1AC0 0x0000B719 0x0000D474 0x000F4240 0x1FFF1AC0 0x0000B719 0x0000D474 0x0000D474 
[2019-09-09 17:00:07.398] 0x1FFF18C8:0x1FFF1AC0 0x00000000 0x000F423F 0x410FC241 0x00000001 0x005D6241 0x20000000 0x1FFF0000 
[2019-09-09 17:00:07.502] 0x1FFF18E8:0x00000000 0x00000000 0x00030000 0x00010000 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 17:00:07.607] 0x1FFF1908:0x00000000 0x00000000 0x00100000 0x00000000 0x00000000 0x00000000 0x20000020 0x0000086B 
[2019-09-09 17:00:07.710] 0x1FFF1928:0x00002710 0x00000000 0x00005E0D 0x00000000 0x00000000 0x0000C5D0 0x00008A9C 
[2019-09-09 17:00:07.802] 
[2019-09-09 17:00:07.803] Next:
[2019-09-09 17:00:07.811] main  State: 0x2 Entry: 0x00008B29 Stack Size: 0x00001000 Mem: 0x1FFF0940 SP: 0x1FFF1900
[2019-09-09 17:00:07.902] Stack Dump: PSP
[2019-09-09 17:00:07.919] 0x1FFF1900:0x00000000 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0x00000000 0x00000000 
[2019-09-09 17:00:08.025] 0x1FFF1920:0x20000020 0x0000086B 0x00002710 0x00000000 0x00005E0D 0x00000000 0x00000000 0x0000C5D0 
[2019-09-09 17:00:08.129] 0x1FFF1940:0x00008A9C 
[2019-09-09 17:00:08.152] 
[2019-09-09 17:00:08.153] Ready:
[2019-09-09 17:00:08.159] rtx_idle  State: 0x1 Entry: 0x000091E1 Stack Size: 0x00000200 Mem: 0x1FFF1F78 SP: 0x1FFF2138
[2019-09-09 17:00:08.260] Stack Dump: PSP
[2019-09-09 17:00:08.290] 0x1FFF2138:0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 17:00:08.377] 0x1FFF2158:0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00009B8D 0x000091E1 0x01000000 
[2019-09-09 17:00:08.483] 0x1FFF2178:0xE25A2EA5 
[2019-09-09 17:00:08.507] 
[2019-09-09 17:00:08.507] Wait:
[2019-09-09 17:00:08.513] rtx_timer  State: 0x83 Entry: 0x00009ABD Stack Size: 0x00000300 Mem: 0x1FFF2178 SP: 0x1FFF2418
[2019-09-09 17:00:08.614] Stack Dump: PSP
[2019-09-09 17:00:08.629] 0x1FFF2418:0xFFFFFFFF 0x00000000 0x1FFF2470 0x1FFF1E24 0x00000000 0x00000000 0x00000000 0x00000000 
[2019-09-09 17:00:08.738] 0x1FFF2438:0xFFFFFFFE 0x1FFF1E24 0x1FFF2470 0x00000000 0x0000AAD1 0x00008F73 0x00008F98 0x61000000 
[2019-09-09 17:00:08.839] 0x1FFF2458:0x00008FD0 0x1FFF2470 0x1FFF0568 0x00000000 0x00000000 0x00009AFB 0x00009ABD 0x01000000 
[2019-09-09 17:00:08.941] 0x1FFF2478:0x00000001 
[2019-09-09 17:00:08.968] 
[2019-09-09 17:00:08.968] Delay:
[2019-09-09 17:00:08.974] For more info, visit: https://mbed.com/s/error?error=0x80FF013D&osver=999999&core=0x410FC241&comp=1&ver=6120001&tgt=K64F
[2019-09-09 17:00:09.100] -- MbedOS Error Info --

NOTE: If you search (#number) (which I manually added) you will be able to confirm that the stack dump matches with true callstack information.

Thanks for the guidance!

@andrewc-arm andrewc-arm closed this Sep 9, 2019
@0xc0170
Copy link
Contributor

0xc0170 commented Sep 9, 2019

Good to have this resolved, some users will find this discussion helpful (they might have the same question about "why O1").

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants