2011-04-03 13:01:29 CPLB miss in Application
Usama Shakeel (PAKISTAN)
Message: 99553
Hello,
I am unable to understand the reason for the following error. Because when I declare one more Variable in my code it crashes most probably what I can think of is that allcated memory is being already being used by some pointer after reading the following link
https://docs.blackfin.uclinux.org/doku.php?id=uclinux-dist:analyzing_traces
Kindly let me know is it related to DEBUG_BFIN_NO_KERN_HWTRACE, as mentioned in the following thread.
blackfin.uclinux.org/gf/project/uclinux-dist/forum/?_forum_action=ForumMessageBrowse&thread_id=29880&action=ForumBrowse
Regards,
Usama
Data access CPLB miss
<5> - Used by the MMU to signal a CPLB miss on a data access.
Deferred Exception context
CURRENT PROCESS:
COMM=finalapp PID=183 CPU=0
TEXT = 0x02a80040-0x02a8e020 DATA = 0x02a8e040-0x02a90a28
BSS = 0x02a90a28-0x02a99a00 USER-STACK = 0x02aa5f7c
return address: [0x02a868bc]; contents of:
0x02a86890: 0810 0144 0145 cc04 2a09 9003 0000 cc04
0x02a868a0: 6a28 9004 0000 1817 0811 0605 4f10 3420
0x02a868b0: 67fa 320a 4f1a 3622 e0a2 1006 [c803] 1800
0x02a868c0: 9003 9e03 c803 1800 9004 9f84 3422 e13c
ADSP-BF532-0.5(Detected 0.6) 400(MHz CCLK) 66(MHz SCLK) (mpu off)
Linux version 2.6.34.7-ADI-2010R1 (usama@usama-desktop) (gcc version 4.3.5 (ADI-2010R1-RC4) ) #20 Sun Apr 3 12:41:50 PKT 2011
SEQUENCER STATUS: Not tainted
SEQSTAT: 00060026 IPEND: 0008 IMASK: ffff SYSCFG: 0006
EXCAUSE : 0x26
physical IVG3 asserted : <0xffa08760> { _trap + 0x0 }
RETE: <0x00000000> /* Maybe null pointer? */
RETN: <0x007a8000> /* kernel dynamic memory */
RETX: <0x00000480> /* Maybe fixed code section */
RETS: <0x02a8282a> [ finalapp + 0x27ea ]
PC : <0x02a868bc> [ finalapp + 0x687c ]
DCPLB_FAULT_ADDR: <0x1584d314> /* unconnected memory */
ICPLB_FAULT_ADDR: <0x02a868bc> [ finalapp + 0x687c ]
PROCESSOR STATE:
R0 : 1544ba0c R1 : 02a89742 R2 : 2a897418 R3 : 26e978d5
R4 : 40238831 R5 : 05512e83 R6 : 00386a18 R7 : 02a89742
P0 : 00a01914 P1 : 05512e83 P2 : 02a932a0 P3 : 02aa5f80
P4 : 00000000 P5 : 02b07ffc FP : 02aa5744 SP : 007a7f24
LB0: 02a868c5 LT0: 02a868bc LC0: 05512e82
LB1: 02a8c30b LT1: 02a8c2d4 LC1: 00000000
B0 : 00401904 L0 : 2a897418 M0 : 1544ba0c I0 : 1584d314
B1 : 00000000 L1 : 00000000 M1 : 00000000 I1 : 00000001
B2 : 00000000 L2 : 00000000 M2 : 00000000 I2 : 00000000
B3 : 00000000 L3 : 00000000 M3 : 00000000 I3 : 0000001a
A0.w: 00000000 A0.x: 00000000 A1.w: 00000000 A1.x: 00000000
USP : 02aa570c ASTAT: 02003044
QuoteReplyEditDelete
2011-04-03 18:45:47 Re: CPLB miss in Application
Paul Lau (UNITED STATES)
Message: 99555
CPLB miss could means a lot of different things. Here are the several repeatable cases that I have seen with this type of error:
case 1: In my last encounter w/ CPLB miss, app causes stack overflow running too deep of a recursion. To quickly verify if it is related to this, you can simply reduce size of some stack variables and retry. If the problem goes away, you're moving in the right direction.
case 2: I have also seen CPLB miss if you use pragma pack(1) and try to type cast a ptr of even-byte variable (e.g. int) into odd boundary, this would be the reason if the problem goes away when, say, you change you added variable from a char into an int.
case 3: dereferencing NULL ptr.
Using gdbserver also gives you a hint of what's happening. I was able to identify all these cases: In the 2nd and 3rd case case, you can view a task trace (I used ddd) and the thread will be locked at the bad assignment. In the 1st caes, all pthread info' could be trashed, and you won't be even able get the list of running threads.
QuoteReplyEditDelete
2011-04-03 20:00:07 Re: CPLB miss in Application
Paul Lau (UNITED STATES)
Message: 99556
Mike's resp to a similar problem
blackfin.uclinux.org/gf/project/uclinux-dist/forum/?_forum_action=ForumMessageBrowse&thread_id=44665&action=ForumBrowse&forum_id=39
QuoteReplyEditDelete
2011-04-05 01:23:27 Re: CPLB miss in Application
Usama Shakeel (PAKISTAN)
Message: 99577
Thanks Paul for the informative reply,
Actually I was trying to figure out the problem that is why I got late on reply.
The reason seems to be of deep recursion as when I reduce the number of iteration of loop it seems to work. Although I tried increasing the stack size of an application while compiling it, but it did not worked. Can you help how you resolved when you came across similar problem?
Regards
Usama Bin Shakeel
QuoteReplyEditDelete
2011-04-05 07:40:34 Re: CPLB miss in Application
Paul Lau (UNITED STATES)
Message: 99597
if your application is pthread based, you may need to set the stack of individual threads using pthread_attr_setstacksize(). I never tried it, though.
Personnally I never want to change the default stack settings because some unrelated code may depend on it. Here are a few suggestions:
- reduce the size of stack array variables
- declare the stack arrays as static, as long as it is ok to reuse (i.e. overwriting) the array when recursing in.
- change your algorithm so that you don't need to do a recursion at all.
QuoteReplyEditDelete
2011-04-08 05:12:49 Re: CPLB miss in Application
Aaron Wu (CHINA)
Message: 99689
What's the latest status for this problem, do you have a specific example to reproduce this issue?