Comment # 10
on bug 1140
from Eric Sandeen
really not sure what to make of this.
xfs_db> frag
i 0
pp 0x2a2354
&pp[i] 0x2a2354
Program received signal SIGBUS, Bus error.
process_btinode (whichfork=<optimized out>, extmapp=<optimized out>,
dip=<optimized out>) at frag.c:264
264 printf("pp[i] %lu\n", pp[i]);
(gdb) bt
#0 process_btinode (whichfork=<optimized out>, extmapp=<optimized out>,
dip=<optimized out>) at frag.c:264
#1 process_fork (dip=<optimized out>, whichfork=whichfork@entry=0) at
frag.c:300
#2 0x0000000000116ddc in process_inode (agf=0x29a000, dip=<optimized out>,
agino=100) at frag.c:350
#3 scanfunc_ino (block=0x29ca00, level=level@entry=0, agf=agf@entry=0x29a000)
at frag.c:502
#4 0x0000000000116aa8 in scan_sbtree (agf=agf@entry=0x29a000, root=<optimized
out>, nlevels=<optimized out>, btype=TYP_INOBT, func=0x116ad4 <scanfunc_ino+4>)
at frag.c:429
#5 0x0000000000117060 in scan_ag (agno=0) at frag.c:385
#6 frag_f (argc=<optimized out>, argv=<optimized out>) at frag.c:167
#7 0x00000000001119a0 in command (argc=<optimized out>, argv=0x299fe0) at
command.c:98
#8 0x00000000001051bc in main (argc=<optimized out>, argv=<optimized out>) at
init.c:215
(gdb) list frag.c:261
256 return;
257 }
258 pp = XFS_BMDR_PTR_ADDR(dib, 1,
259 xfs_bmdr_maxrecs(XFS_DFORK_SIZE(dip, mp, whichfork), 0));
260 for (i = 0; i < be16_to_cpu(dib->bb_numrecs); i++) {
261 printf("i %d\n", i);
262 printf("pp %p\n", pp);
263 printf("&pp[i] 0x%lx\n", &pp[i]);
264 printf("pp[i] %lu\n", pp[i]);
265 scan_lbtree(be64_to_cpu(pp[i]), be16_to_cpu(dib->bb_level),
(gdb) p *dib
$10 = {bb_level = 1, bb_numrecs = 1}
(gdb) p i
$11 = 0
(gdb) p pp
$12 = (xfs_bmbt_ptr_t *) 0x2a2354
(gdb) p *pp
$13 = 11
(gdb)
pp seems valid and I can dereference it in gdb but pp[0] causes a bus error at
runtime?