This is THE problem we're having. Unfortunately, of course, it is a
highly intermittant problem.
When this happens again, how can I go about locating the page to give
you a binary dump?
The line number in the yaffs code as far as I can tell is 323:
for(i = 0; i < dev->blocksInCheckpoint && dev->checkpointBlockLi
st[i] >= 0; i++){
Here's the output from objdump:
c0084438 <yaffs_CheckpointClose>:
yaffs_CheckpointClose():
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:316
c0084438: e1a0c00d mov ip, sp
c008443c: e92dd810 stmdb sp!, {r4, fp, ip, lr, pc}
c0084440: e24cb004 sub fp, ip, #4 ; 0x4
c0084444: e1a04000 mov r4, r0
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:318
c0084448: e59030d0 ldr r3, [r0, #208]
c008444c: e3530000 cmp r3, #0 ; 0x0
c0084450: 0a00001e beq c00844d0
<yaffs_CheckpointClose+0x98>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:319
c0084454: e59030c8 ldr r3, [r0, #200]
c0084458: e3530000 cmp r3, #0 ; 0x0
c008445c: 1a000019 bne c00844c8
<yaffs_CheckpointClose+0x90>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:335
c0084460: e59410d4 ldr r1, [r4, #212]
c0084464: e5943010 ldr r3, [r4, #16]
c0084468: e0020193 mul r2, r3, r1
c008446c: e5943d30 ldr r3, [r4, #3376]
c0084470: e0623003 rsb r3, r2, r3
c0084474: e5843d30 str r3, [r4, #3376]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:336
c0084478: e59430fc ldr r3, [r4, #252]
c008447c: e0613003 rsb r3, r1, r3
c0084480: e58430fc str r3, [r4, #252]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:339
c0084484: e59f30c0 ldr r3, [pc, #192] ; c008454c
<yaffs_Checkp
ointClose+0x114>
c0084488: e5933000 ldr r3, [r3]
c008448c: e3130902 tst r3, #32768 ; 0x8000
c0084490: 1a000008 bne c00844b8
<yaffs_CheckpointClose+0x80>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:342
c0084494: e59400cc ldr r0, [r4, #204]
c0084498: e3500000 cmp r0, #0 ; 0x0
c008449c: 1a000000 bne c00844a4
<yaffs_CheckpointClose+0x6c>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:351
c00844a0: e91ba810 ldmdb fp, {r4, fp, sp, pc}
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:344
c00844a4: ebfef0db bl c0040818 <kfree>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:345
c00844a8: e3a03000 mov r3, #0 ; 0x0
c00844ac: e58430cc str r3, [r4, #204]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:346
c00844b0: e3a00001 mov r0, #1 ; 0x1
c00844b4: eafffff9 b c00844a0
<yaffs_CheckpointClose+0x68>
c00844b8: e59410c4 ldr r1, [r4, #196]
c00844bc: e59f008c ldr r0, [pc, #140] ; c0084550
<yaffs_Checkp
ointClose+0x118>
c00844c0: ebfe8aa8 bl c0026f68 <printk>
c00844c4: eafffff2 b c0084494
<yaffs_CheckpointClose+0x5c>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:320c00844c8: ebffff1e bl c0084148
<yaffs_CheckpointFlushBuffer>
c00844cc: eaffffe3 b c0084460
<yaffs_CheckpointClose+0x28>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:323
c00844d0: e1a0c003 mov ip, r3
c00844d4: e590e0d4 ldr lr, [r0, #212]
c00844d8: e153000e cmp r3, lr
c00844dc: a59000e4 ldrge r0, [r0, #228]
c00844e0: aa000015 bge c008453c
<yaffs_CheckpointClose+0x104>
c00844e4: e59000e4 ldr r0, [r0, #228]
c00844e8: e7903103 ldr r3, [r0, r3, lsl #2]
c00844ec: e3530000 cmp r3, #0 ; 0x0
c00844f0: ba000011 blt c008453c
<yaffs_CheckpointClose+0x104>
c00844f4: e1a02003 mov r2, r3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:324
c00844f8: e59430ec ldr r3, [r4, #236]
c00844fc: e0831182 add r1, r3, r2, lsl #3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:325
c0084500: e5d12003 ldrb r2, [r1, #3]
c0084504: e202300f and r3, r2, #15 ; 0xf
c0084508: e3530003 cmp r3, #3 ; 0x3
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:326
c008450c: 03c23008 biceq r3, r2, #8 ; 0x8
c0084510: 03833007 orreq r3, r3, #7 ; 0x7
c0084514: 05c13003 streqb r3, [r1, #3]
c0084518: 0594e0d4 ldreq lr, [r4, #212]
c008451c: 059400e4 ldreq r0, [r4, #228]
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:323
c0084520: e28cc001 add ip, ip, #1 ; 0x1
c0084524: e15c000e cmp ip, lr
c0084528: aa000003 bge c008453c
<yaffs_CheckpointClose+0x104>
c008452c: e790310c ldr r3, [r0, ip, lsl #2]
c0084530: e1a02003 mov r2, r3
c0084534: e3530000 cmp r3, #0 ; 0x0
c0084538: aaffffee bge c00844f8
<yaffs_CheckpointClose+0xc0>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:331
c008453c: ebfef0b5 bl c0040818 <kfree>
/opt/cni/bbarnett-kernel-3247/kernel/linux-2.4.27-r2/fs/yaffs2/yaffs_checkptrw.c
:332
c0084540: e3a03000 mov r3, #0 ; 0x0
c0084544: e58430e4 str r3, [r4, #228]
c0084548: eaffffc4 b c0084460
<yaffs_CheckpointClose+0x28>
c008454c: c01462c4 andgts r6, r4, r4, asr #5
c0084550: c012cd58 andgts ip, r2, r8, asr sp
-blair
Charles Manning wrote:
> On Friday 16 February 2007 11:07, Blair Barnett wrote
> Is this the same problem as the corruption you mention below?
> Can you please explain the sequence that lead up to this?
> Also please provide the following:
> 1) A line number for this oops. I have an idea, but I want to be sure.
> 2) A binary dump of the broken page.
>
> I suggest you also turn on more yaffs tracing to check this out,
>
> From what I read here, this crash happened during a umount due to a strange
> block value beiung used in the checkpoint.
>