Re: Unable to handle kernel paging request

Bernd Schmidt (crux@Pool.Informatik.RWTH-Aachen.DE)
Mon, 24 Feb 1997 12:17:36 +0100 (MET)


> > Unable to handle kernel paging request at virtual address 40007000
> > current->tss.cr3 = 01f84000, %cr3 = 01f84000
> > *pde = 00ec5067
> > *pte = 0013bc00
> > Oops: 0000
> > CPU: 0
> > EIP: 0010:[<00157b45>]
> > EFLAGS: 00010216
> > eax: 00986bb0 ebx: 00000400 ecx: 00000100 edx: 016bd400
> > esi: 40007000 edi: 016bd400 ebp: 00000400 esp: 01384c08
>
> Flipped 14th bit in esi, most likely. In other words, memory error.

I'd like to agree, but I've seen another bug report like this, and I noticed
that in both cases, the function elf_core_dump appeared in the stack trace.
I even still have the original mail. The author (Johnny Stenback) claims the
problem is reproducible with the following test program:

#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

void main ()
{
int fd;
void *p;
char buf[1024];
fd = open("test", O_RDONLY);
p = mmap(NULL, 200, PROT_WRITE, MAP_PRIVATE, fd, 0);
strncpy (buf, p, 100);
printf ("%s\n", buf);
munmap (p, 200);
exit (0);
}

The "Oops" from the other post is mostly identical-looking.
(I haven't tried this, so if it doesn't work, I apologize. I'll try today)
Of course, you'll have to enable core dumps.

Bernd