page size assertion

Michael Hohmuth hohmuth at
Mon Nov 30 10:45:38 CET 1998

Eiji Ota <age at> writes:

> > > > I'm interested in this fantastic work(of course, L4). When I tried to
> > > > feel it, I faced an assertion failed by assert(size == PAGE_SIZE) in
> > > > line).
> > > > 
> > > > The wrong page size seemed to be passed by fpage_map in as
> > > > a SUPERPAGE_SIZE, but I don't find the root cause for this trouble.
> Hi, after I changed the 113-line in to the following, it
> worked, though I don't know whether  it was correct or not.
>  if (size > snd_size // want to send less that a superpage?
> 		    |
> 		    V
>  if (size >= snd_size // want to send less that a superpage?

This is not the correct fix, I'm afraid.  What you do here is to
effectively prohibiting the passing of superpage (4-MByte) mappings.

I think I have a theory on what the problem in Fiasco is (more on that 
below).  However, it would still be useful to know what the system is
trying to do when the error occurs; this would help me to reproduce
and track down the problem.

My theory is that we fail to test rigorously enough that a receiver
really has enough space in its virtual address space to take a
superpage mapping.  I think we currently test that just 4K are
unmapped in the receiver (that is, no mapping exists for the target
virtual address); that's not enough.

I will try to verify this theory when I'm in the office later today.

hohmuth at, hohmuth at

More information about the l4-hackers mailing list