L4-Linux on 486
Michael Hohmuth
hohmuth at innocent.com
Thu Aug 26 17:39:23 CEST 1999
edmundo at rano.demon.co.uk writes:
> (1) The Fiasco assertion about stack space (thread.cc:316) has failed
> several times.
I can reproduce this: Under heavy interrupt load, a thread's kernel
stack can overflow on slow machines. I'm still thinking about what
the best way is to correct the problem.
> (2) Frequently cc1 segfaults when compiling a large file. Annoyingly,
> it hasn't done it since I built one with debugging symbols.
Maybe this is a symptom of an undetected kernel-stack overflow: When
the kernel accidentally touches user memory, this can lead to
page-fault messages being sent to the thread's pager and the thread
being killed.
> (3) The following C code causes massive strafing[1] of the disc which
> I can terminate only by rebooting as the process seems to ignore all
> signals.
>
> {
> unsigned char a[4096*1024];
> int i;
> unsigned char c;
>
> for (c = 0; ; c++) {
> for (i = 0; i < sizeof(a); i += 4096)
> a[i] = c;
> }
> }
>
> On one occasion cc1 gave the same behaviour.
>
> Can anyone tell me if this behaviour is a bug? It might just be a
> "limitation" of L4-Linux, in which I'm in trouble, because it's the
> only nasty behaviour which I can reproduce in a simple way.
>
> I only have 8 MB of memory, by the way, so the code above is expected
> to exercise the disc. I just don't expect it to be unkillable. A
> program that mallocs lots of 4000-byte blocks doesn't become
> unkillable in the same way.
I'd say the unkillable process is a bug, but the disk thrashing is to
be expected on a low-memory machine. I'll try reproducing this later
-- I'll tackle the stack-overflow problem first.
Michael
--
hohmuth at innocent.com, hohmuth at sax.de
http://www.sax.de/~hohmuth/
More information about the l4-hackers
mailing list