Re (2): [Oberon] ETH Oberon/Gadgets: System Freeze in unloading
Guenter Feldmann
fld at Informatik.Uni-Bremen.DE
Thu Aug 22 14:02:49 CEST 2002
|> The problem in B is a stack overflow. For example, try the following
|> command on your Oberon system to see how it handles stack overflow
|> (warning: it may crash):
|>
|> MODULE Temp;
|> PROCEDURE Trap*;
|> BEGIN
|> Trap
|> END Trap;
|> END Temp.
|> Temp.Trap
|>
|> Here are the results on the four ETH Oberon systems I tested (latest versi
ons):
|>
|> 1. Native Oberon:
|> > TRAP -14 Stack overflow ( 00103FFCH ) (PC Native 20.08.2002)
|> > Temp.Trap PC = 10
|> > Temp.Trap PC = 15
|> > ...
|>
|> 2. Oberon for Aos:
|> > [1] TRAP -14 PL 3 stack overflow Aos 20.07.2002
|> > [...]
|> > Temp.Trap pc=10
|> > Temp.Trap pc=15
|> > ...
|>
|> 3. ETH PlugIn Oberon for Windows (14.5.2001):
|> > TRAP stack overflow in thread Oberon.Loop
|> >
|> > Temp.Trap PC = 7
|> > Temp.Trap PC = 15
|> > Temp.Trap PC = 15
|> (this was running on Windows 2000 Version 5.0.2195 Service Pack 2)
|>
|> 4. Oberon for Linux x86 crashes (terminates the Oberon process).
|> I suspect this is simply a bug that can probably be fixed by Günter.
I found no way to handle a segmentation violation caused by stack overflow
in Linux. In all real Unix versionas I know of, stack overflow handling is
not a problem as they support an alternate stack for signal(trap) handling.
In the Solaris ports of Oberon Temp.Trap yields two sementation violation
traps. The second (recursive) trap view contains a notice which informs the
user that the first trap was probably caused by stack overflow.
When I looked for the alternate signal stack in Linux last time
(Kernel 2.2,x, glibc 2.2.1) I finally found the procedure sigaltstack. But
calling this procedure crashed the program. I hope that in the near future
sigaltstack will work in Linux too.
-- Guenter
--
Guenter Feldmann EMail: G.Feldmann at informatik.Uni-Bremen.de
FB 3, Informatik
Univ. Bremen
More information about the Oberon
mailing list