用户态异常信息说明

用户态在运行过程中,可能由于各种原因出现用户态系统异常,异常信息如下所示:


1. ##################excFrom: User!####################
2. prefetch_abort fault fsr:0x5, far:0x00000000
3. Translation fault, section
4. excType: prefetch abort
5. processName       = shell
6. processID         = 3
7. process aspace    = 0x01000000 -> 0x3f000000
8. taskName          = shell
9. taskID            = 4
10. task user stack   = 0x3707d000 -> 0x3717d000
11. pc    = 0x0
12. ulr   = 0x2000424 in /bin/shell ---> 0x424
13. usp   = 0x3717cd60fp    = 0x3717cd64
14. R0    = 0x1
15. R1    = 0x0
16. R2    = 0x0
17. R3    = 0x1
18. R4    = 0x3717cf58
19. R5    = 0x0
20. R6    = 0x3717cf54
21. R7    = 0x200043c
22. R8    = 0x84
23. R9    = 0x229a7560
24. R10   = 0x0
25. R11   = 0x3717cd64
26. R12   = 0x0
27. CPSR  = 0x40000030
28. *******backtrace begin*******
29. traceback 0 -- lr = 0x229123a4    fp = 0x0 lr in /lib/libc.so --> 0x213a4

31. PID  PPID PGID       UID  Status CPUUSE CPUUSE10s CPUUSE1s Policy Priority MTID TaskTotal   Mode  PName
32. 1    -1    1         0   Ready    0.0       0.0      0.0     RR       28   16         1   user  init
33. 2    -1    2         0    Pend   10.1      10.1      0.0     RR        0    0        14 kernel  KProcess
34. 3     1    3         0 Running    0.0       0.0      0.0     RR       28    4         1   user  shell

36. TID  PID      Status StackSize WaterLine Policy Priority    MEMUSE  TaskName
37. 16    1       Ready    0x3000     0x978     RR       31    0x8b0c  init
38. 0    2        Pend    0x1000     0x1d4     RR        5         0  ResourcesTask
39. 2    2        Pend    0x4000     0x4ec     RR        0         0  Swt_Task
40. 3    2        Pend    0x4000     0x1d4     RR        1         0  system_wq
41. 5    2        Pend    0x4000     0x1fc     RR        9         0  SendToSer
42. 6    2    PendTime    0x6000     0x204     RR        5         0  tcpip_thread
43. 7    2        Pend    0x3000     0x1fc     RR        5         0  sdmci_detect
44. 8    2        Pend    0x4000     0x204     RR        5         0  USB_GIANT_Task
45. 9    2        Pend    0x4000     0x204     RR        1         0  USB_NGIAN_ISOC_Task
46. 10    2        Pend    0x4000     0x204     RR        2         0  USB_NGIAN_BULK_Task
47. 11    2        Pend    0x4000     0x690     RR        5     0xbb0  USB_EXPLR_Task
48. 12    2        Pend    0x4000     0x204     RR        5         0  USB_CXFER_Task
49. 13    2        Pend   0x20000     0x1e4     RR        3    0xac20  eth_irq_Task
50. 14    2        Pend    0x4000     0x1d4     RR       10         0  jffs2_gc_thread
51. 15    2        Pend    0x2000     0x1f4     RR        4         0  hisi_frw
52. 4    3     Running    0x3000     0x838     RR       31    0x1100  shell
53. system memcheck over, all passed!

其中,主要包含如下几方面信息:

  1. 用户态异常基本信息:

1. prefetch_abort fault fsr:0x5, far:0x00000000
2. Translation fault, section
3. excType: prefetch abort
4. processName       = shell
5. processID         = 3
6. process aspace    = 0x01000000 -> 0x3f000000
7. taskName          = shell
8. taskID            = 4
9. task user stack   = 0x3707d000 -> 0x3717d000

  1. 寄存器相关信息。

1. pc    = 0x0
2. ulr   = 0x2000424 in /bin/shell ---> 0x424
3. usp   = 0x3717cd60fp    = 0x3717cd64
4. R0    = 0x1
5. R1    = 0x0
6. R2    = 0x0
7. R3    = 0x1
8. R4    = 0x3717cf58
9. R5    = 0x0
10. R6    = 0x3717cf54
11. R7    = 0x200043c
12. R8    = 0x84
13. R9    = 0x229a7560
14. R10   = 0x0
15. R11   = 0x3717cd64
16. R12   = 0x0
17. CPSR  = 0x40000030

  1. 调用栈信息。

1. *******backtrace begin*******
2. traceback 0 -- lr = 0x229123a4    fp = 0x0 lr in /lib/libc.so --> 0x213a4

  1. 进程线程基本信息。

1. PID  PPID PGID       UID  Status CPUUSE CPUUSE10s CPUUSE1s Policy Priority MTID TaskTotal   Mode  PName
2. 1    -1    1         0   Ready    0.0       0.0      0.0     RR       28   16         1   user  init
3. 2    -1    2         0    Pend   10.1      10.1      0.0     RR        0    0        14 kernel  KProcess
4. 3     1    3         0 Running    0.0       0.0      0.0     RR       28    4         1   user  shell

6. TID  PID      Status StackSize WaterLine Policy Priority    MEMUSE  TaskName
7. 16    1       Ready    0x3000     0x978     RR       31    0x8b0c  init
8. 0    2        Pend    0x1000     0x1d4     RR        5         0  ResourcesTask
9. 2    2        Pend    0x4000     0x4ec     RR        0         0  Swt_Task
10. 3    2        Pend    0x4000     0x1d4     RR        1         0  system_wq
11. 5    2        Pend    0x4000     0x1fc     RR        9         0  SendToSer
12. 6    2    PendTime    0x6000     0x204     RR        5         0  tcpip_thread
13. 7    2        Pend    0x3000     0x1fc     RR        5         0  sdmci_detect
14. 8    2        Pend    0x4000     0x204     RR        5         0  USB_GIANT_Task
15. 9    2        Pend    0x4000     0x204     RR        1         0  USB_NGIAN_ISOC_Task
16. 10    2        Pend    0x4000     0x204     RR        2         0  USB_NGIAN_BULK_Task
17. 11    2        Pend    0x4000     0x690     RR        5     0xbb0  USB_EXPLR_Task
18. 12    2        Pend    0x4000     0x204     RR        5         0  USB_CXFER_Task
19. 13    2        Pend   0x20000     0x1e4     RR        3    0xac20  eth_irq_Task
20. 14    2        Pend    0x4000     0x1d4     RR       10         0  jffs2_gc_thread
21. 15    2        Pend    0x2000     0x1f4     RR        4         0  hisi_frw
22. 4    3     Running    0x3000     0x838     RR       31    0x1100  shell
23. system memcheck over, all passed!

可以根据以上信息,分析用户态异常的具体原因。