page size assertion
Michael Hohmuth
hohmuth at innocent.com
Mon Nov 30 10:45:38 CET 1998
Eiji Ota <age at yk.fujitsu.co.jp> 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
> > > > space.cc(178 line).
> > > >
> > > > The wrong page size seemed to be passed by fpage_map in ipc_map.cc as
> > > > a SUPERPAGE_SIZE, but I don't find the root cause for this trouble.
>
> Hi, after I changed the 113-line in ipc_map.cc 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.
Michael
--
hohmuth at innocent.com, hohmuth at sax.de
http://www.sax.de/~hohmuth/
More information about the l4-hackers
mailing list