Messages in this thread |  | | Date | Sun, 1 Dec 1996 18:57:02 -0500 (EST) | From | Ion Badulescu <> | Subject | Re: mlockall() still causes 100 % oops in 2.0.27 |
| |
On Sun, 1 Dec 1996, Zarmfab Software Development wrote:
> has anybody else noticed that mlockall() causes a 100 % > reproduceable oops at alpha-systems running 2.0.27 ?? > The same happened with 2.0.26, at i386 the call seems > to work. The oops happens in line 129 of mlock.c : > char c=get_user((char *)start);
Hmm.. it looks like a bad user-space pointer (and this is 2.0.x, so the smart exceptions handling does not protect us).. How a bad pointer can get there is a totally different question. The only difference between alpha and i386 is the get_user macro, which looks fine to me (unless gcc is doing something really stupid).
Could you please pipe the oops through ksymoops and post the results here? It might give somebody a clue about the pointer...
> i'd really like to work on a fix, but don't even > understand the __asm__ directive some lines down, sorry.
The __asm__ directive immediately after get_user only forces gcc to generate code for get_user (which in turn touches each page between start and end to make sure it's not paged out). If you remove it, gcc will complain about "unused variable `c'" or something like that and will not do anything inside the loop, except for start += PAGE_SIZE.
Ionut
-- It is better to keep your mouth shut and be thought a fool, than to open it and remove all doubt.
|  |