Hi,
Its been a while.. been busy with other things. I did get the
fork() and exec() problems I was having fixed in the amiga kernel.
I have a rather strange bug that I have been banging my head against
and cant seem to figure out. For some reason certain pages are
getting referenced (by ref_slot()) way more than they should be.
The strange thing is that if I throw a printf in ref_slot() the
problem goes away. If I do something like:
if(pp->pp_ref > 10)
printf("...");
then the page reference will keep growing until it hits 10, then
it will stop going out of control. I think that the printf()
is taking enough time to allow for another process to get
scheduled and maybe the next flushing of the mmu's cache sets
things right. I did throw in a flush_atc() to test this out
and it seems to at least partially fix the problem. I still
get a few pages that are referenced too many times. This
causes the system to be unuseable at the next exit() since
an assertion fails "still ref".
I've tried all sorts of things to track it down. It seems that
the only pages that this happens to are those that are mapped
by kern_mem when handling message passing. The amiga port differs
from the i386 in the handling of kernel page tables. There
is a seperate root pointer for the kernel and the user page tables.
I'm wondering if maybe problems are arising because views that
are attached by hat_addtrans() are not visible by the kernel.
Its been a few weeks since I've played with this so I'm
probably leaving out some important details. I should also
point out that my sources are quite old now. I should merge
the current sources in with mine. If you have any ideas on what
might be wrong please let me know.
Tim N.
Received on Sat Dec 31 16:47:26 1994
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:11 PDT