Hi,
After reading from the pager there happens a weird thing:
Breakpoint 1, pager_read_page (pager=0x8055528, page=0,
buf=0x128bd7c, writelock=0x128bd80) at pager.c:554
554 {
(gdb) p pager
$1 = (struct user_pager_info *) 0x0
(gdb) p (struct user_pager_info *) pager_get_upi
(diskfs_root_node->dn->pager)
$2 = (struct user_pager_info *) 0x8055528
The value in pager seems to be random (now it is zero but sometimes it
has other values).
I compile with the following in CFLAGS: -O -g -D_GNU_SOURCE -Wall
I got the same kind of problem. First of all, I think you should not compile
with optimization if you want to debug it with gdb (otherwise you get weird
think). But the problem with those random values could be many things (of
course ;), but what you could check is whether your code is overriding the
stack at some point (for instance, check how much memory is allocated for
your struct dirent and so on).